SWIG INPUT类型(C ++到Python)

问题描述 投票:1回答:2

我正在为C ++ api创建一个python包装器,对某些类型的支持或多或少使用模板是直接的,但是api需要一些引用变量,其中一个是int,另一个是float。

如果我没有错,可以通过创建一个INOUT应用来完成:

%apply float& INOUT { float& a };
%apply int& INOUT { int& a };

但我如何在我的python中使用这些类型?

提前感谢您的任何提示。

python c++ cmake swig inout
2个回答
0
投票

这些参数是从生成的python函数返回的(考虑到包装的C ++函数签名,不完全直观)。让我们说这是你的暴露功能:

%apply float& INOUT { float& a };
%apply int& INOUT { int& b };

void foo(float& a, int& b);

你会从python中调用它

a = 3.14
b = 42

a, b = foo(a, b)

如果您没有捕获返回值,则ab保持不变。


0
投票

亲爱的未来读者,这些是您正在寻找的机器人:

myapi.new_intp()
myapi.new_floatp()  
myapi.intp_value(a)
myapi.floatp_value(b)
myapi.delete_intp(a)
myapi.delete_floatp(b)
© www.soinside.com 2019 - 2024. All rights reserved.