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

我想在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 ++ complex?


FFIVE
浏览 137回答 1
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){&nbsp; &nbsp; return a + b;}%}用法(与VS2015编译):>>> import example>>> example.func(1+2j,3-4j)(4-2j)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python