【发布时间】:2015-05-05 14:05:18
【问题描述】:
我有一个能够以普通 ASCII 或宽格式输出字符串的 C++ 类。我想将 Python 中的输出作为字符串获取。我正在使用 SWIG(版本 3.0.4)并已阅读 SWIG 文档。我正在使用以下类型映射将标准 c 字符串转换为我的 C++ 类:
%typemap(out) myNamespace::MyString &
{
$result = PyString_FromString(const char *v);
}
这在使用 VS2010 编译器的 Windows 中运行良好,但在 Linux 中无法完全运行。在 Linux 下编译 wrap 文件时,出现如下错误:
error: cannot convert ‘std::string*’ to ‘myNamespace::MyString*’ in assignment
所以我尝试向 Linux 接口文件添加一个额外的类型映射,如下所示:
%typemap(in) myNamespace::MyString*
{
$result = PyString_FromString(std::string*);
}
但我仍然遇到同样的错误。如果我手动进入包装代码并像这样修复分配:
arg2 = (myNamespace::MyString*) ptr;
然后代码编译就好了。我不明白为什么我的附加类型图不起作用。任何想法或解决方案将不胜感激。提前致谢。
【问题讨论】: