2017-10-09 73 views

回答

1

当参数是输出并且有预先存在的类型图可以帮助时,需要告诉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