我怎么能打电话的时候,一个参数是使用的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
非常感谢你much.It完美地解决了这个问题。 – George