当参数使用 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
我有一个 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