Swig:在Python中使用c ++ STL复合体

Swig: using c++ STL complex in Python

本文关键字:STL 复合体 Python Swig      更新时间:2023-10-16

我想在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).

所以我想知道如何正确使用 SWIG 的 c++ 复合体?

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)