Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问C++;使用SWIG的Python中的typedef 我有一个C++ API,我想用Python来包装。我想调用一个包装的C++函数MyFunc,作为一个参数,下面的C++ TyPuffs /*my_header.h*/ 名称空间my_名称空间{ 向量条 } 其中FoO是C++类。我设法包装了函数和底层类Foo,但我不知道如何创建Foo的向量。我在SWIG.I文件中包括了.h文件,如下所示 /*我的接口.i*/ %{ #包括“my_header.h” typedef my_namespace::Bar; %} %包括“my_header.h”_C++_Python_Swig - Fatal编程技术网

访问C++;使用SWIG的Python中的typedef 我有一个C++ API,我想用Python来包装。我想调用一个包装的C++函数MyFunc,作为一个参数,下面的C++ TyPuffs /*my_header.h*/ 名称空间my_名称空间{ 向量条 } 其中FoO是C++类。我设法包装了函数和底层类Foo,但我不知道如何创建Foo的向量。我在SWIG.I文件中包括了.h文件,如下所示 /*我的接口.i*/ %{ #包括“my_header.h” typedef my_namespace::Bar; %} %包括“my_header.h”

访问C++;使用SWIG的Python中的typedef 我有一个C++ API,我想用Python来包装。我想调用一个包装的C++函数MyFunc,作为一个参数,下面的C++ TyPuffs /*my_header.h*/ 名称空间my_名称空间{ 向量条 } 其中FoO是C++类。我设法包装了函数和底层类Foo,但我不知道如何创建Foo的向量。我在SWIG.I文件中包括了.h文件,如下所示 /*我的接口.i*/ %{ #包括“my_header.h” typedef my_namespace::Bar; %} %包括“my_header.h”,c++,python,swig,C++,Python,Swig,我还尝试在SWIG中包装std::vector模板,如下所示 %包括标准向量.i 名称空间标准{ %模板(矢量_foo)矢量; } 这是可行的,我可以在Python中导入vector_foo。然而,当我将vector_foo作为参数发送给上述函数时,我得到了一个TypeError。我也不能用foo填充vector_foo 在Python中,我执行以下操作 >a=mymodule.vector\u foo() >>>a >>mymodule.myfunc(一个“字符串”) TypeError:在

我还尝试在SWIG中包装std::vector模板,如下所示

%包括标准向量.i
名称空间标准{
%模板(矢量_foo)矢量;
}
这是可行的,我可以在Python中导入vector_foo。然而,当我将vector_foo作为参数发送给上述函数时,我得到了一个TypeError。我也不能用foo填充vector_foo

在Python中,我执行以下操作

>a=mymodule.vector\u foo()
>>>a
>>mymodule.myfunc(一个“字符串”)
TypeError:在方法“myfunc”中,参数1的类型为“my_namespace::Bar&”

如果我可以自己实现FoO工作向量,或者直接访问C++ Type。我正在调用SWIG并使用Python Distutils进行编译

谢谢你的帮助

我解决了

问题似乎是我必须告诉SWIG接口文件中%{%}大括号中已经存在的typedef,即

/* my_interface.i */

%{
#include "my_header.h"
typedef my_namespace::Bar Bar;
%}

typedef my_namespace::Bar Bar;
%include "my_header.h"

虽然我不是100%认为这是个错误。在任何情况下,我现在都有了一个类似于上面的接口文件,包装工作正常。

%之前定义typdef的事实是否包括
重要?我假设您需要像在
%{…%}
中一样,在
#include
之后定义它