使用 SWIG 和 Python 通过引用传递 bool
我使用 SWIG 封装了 C++ 库 API,效果很好,但我被“bool &”难住了。范围。
原始 API 如下所示:
void foo(bool & bar);
当我从 Python 调用它时, _wrap.cxx 会退出包装过程。
int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_bool, 0);
_v = SWIG_CheckState(res);
if (_v) {
换句话说,swig 无法将我传递的内容转换为 bool 指针。
我试图从 Python 中调用它,如下所示:
obj = LibObject()
x = 0
obj.foo(x)
是否有一个简单的类型映射修复程序?
I've wrapped a C++ library API using SWIG, which works well, but I'm stumped by a "bool &" parameter.
The original API looks like this:
void foo(bool & bar);
when I call it from Python, the _wrap.cxx drops out of the wrap process at
int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_bool, 0);
_v = SWIG_CheckState(res);
if (_v) {
In other words, swig can't convert what I'm passing in to a bool pointer.
I'm trying to call it from Python, like so:
obj = LibObject()
x = 0
obj.foo(x)
Is there a simple typemap fix for this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这应该有效:
每当 SWIG 看到
bool & bar
参数,它应该将其视为输入/输出参数。如果您只需要它作为输出参数,请使用OUTPUT
。This should work:
Whenever SWIG sees a
bool & bar
parameter, it should treat it as an in/out parameter. If you only need it as an output parameter, useOUTPUT
.