我怎么能打电话的时候,一个参数是使用的typedef痛饮蟒蛇函数int

问题描述:

我有一个C++ API我试图在Python.There包装是一个功能美孚(TAPIINT32 & iResult)的typedef INT TAPIINT32在报头file.When我使用: α= 0 mymodule.Foo的(a) 在python调用它,我得到一个错误为“类型错误:在方法 '富',类型的参数1' TAPIINT32 &'“。有人可以帮忙吗?非常感谢!我怎么能打电话的时候,一个参数是使用的typedef痛饮蟒蛇函数int

当参数是输出并且有预先存在的类型图可以帮助时,需要告诉SWIG。这里有一个例子:

api.h

typedef int TAPIINT32; 
void Foo(TAPIINT32& iResult); 

api.cpp

#include "api.h" 

void Foo(TAPIINT32& iResult) 
{ 
    iResult = 5; 
} 

api.i

%模块API

%{ 
#include "api.h" 
%} 

%include <windows.i> 
%apply int* OUTPUT {TAPIINT32t&}; 
%include "api.h" 

%apply命令告诉SWIG将现有的类型图应用于指定的类型。在这种情况下,预先存在的int* OUTPUT typemap应用于所有TAPIINT32&参数。请注意,OUTPUT typemap禁止传递参数,并将其作为附加返回值返回。

输出:

>>> import api 
>>> api.Foo() 
5 
+0

非常感谢你much.It完美地解决了这个问题。 – George