当参数使用 typedef int 时,如何调用 swig python 函数

How can I call a swig python function when a parameter is using typedef int

我有一个 C++ API 我正在尝试包装 Python.There 是一个函数 Foo(TAPIINT32 &iResult)使用 typedef int TAPIINT32 在 header file.When 我使用: 一=0 mymodule.Foo(一) 在 python 中调用它,我得到一个错误,如“TypeError: 在方法 'Foo' 中,参数 1 类型 'TAPIINT32 &'”。有人能帮忙解决这个问题?非常感谢!

需要在输出参数时告知 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 类型映射将应用于所有 TAPIINT32& 参数。请注意,OUTPUT 类型映射抑制了传递参数的需要,并且 return 将其作为附加 return 值代替。

输出:

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