Swig:在 Python 中使用 c++ STL 复杂
Posted
技术标签:
【中文标题】Swig:在 Python 中使用 c++ STL 复杂【英文标题】:Swig: using c++ STL complex in Python 【发布时间】:2018-06-22 06:34:26 【问题描述】:我想在 python 中使用 c++ 复杂类型。我尝试了以下 Swig 接口文件:
%module example
%include <std_complex.i>
%template(complexf) std::complex<float>;
它返回了这个错误:
example.i:3: Error: Template 'complex' undefined.
如果我手动包含 c++ 头文件,
%module example
%include <std_complex.i>
%include "/usr/include/c++/7/complex"
%template(complexf) std::complex<float>;
我会得到另一个错误:
/usr/include/c++/7/complex:50: Error: Syntax error in input(1).
所以我想知道如何正确使用 c++ complex 和 SWIG?
【问题讨论】:
【参考方案1】:std_complex.i
已经包含足够的定义来使用std::complex<float>
:
%module example
%include <std_complex.i>
%inline %
using complexf = std::complex<float>;
complexf func(complexf a, complexf b)
return a + b;
%
用法(用VS2015编译):
>>> import example
>>> example.func(1+2j,3-4j)
(4-2j)
【讨论】:
谢谢!我很感激。以上是关于Swig:在 Python 中使用 c++ STL 复杂的主要内容,如果未能解决你的问题,请参考以下文章
SWIG:你能否使用 SWIG 专门使用 C++ 头文件使 C++ 在 Python 中可用?
无法使用 SWIG 在 Python 中实例化 C++ 类(获取属性错误)
如何使用 Python 列表在 C++ 中使用 SWIG 分配 std::vector?