Swig:在 Python 中使用 C++ STL 复合体
Swig: using c++ STL complex in Python
我想在 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 一起使用?
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)
我想在 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 一起使用?
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)