多亏了swig,我想把一些C++代码绑定到python上。
在我的C++代码中,我通过类方法初始化一些重要的变量。
然而,这种初始化似乎给返回的swig带来了一些麻烦
Error: Syntax error - possibly a missing semicolon.
下面是从swig文档中提取的一个非常简单的例子,我只从一个方法中添加了这种初始化。
此示例由3个文件组成(
my_class.hpp
;
my_class.cpp
;
py_myclass.i
).
my_class.hpp:
#ifndef MYCLASS_H
#define MYCLASS_H
class MyClass {
public:
float getSqr();
float getSqr(float _v);
private:
float value=2.;
};
float toto=MyClass().getSqr(3.); // the only line I added !
#endif
my_class.cpp
#include "my_class.hpp"
float MyClass::getSqr() {
return getSqr(value);
}
float MyClass::getSqr(float value) {
return value*value;
}
py_myclass。我
%module py_myclass
%{
#include "my_class.hpp"
%}
%include "my_class.hpp"
因此,我对swig文档所做的唯一修改是添加初始化行
float toto=MyClass().getSqr(3.);
.
我试着用它玩一玩,但总是会出现语法错误。
从这些文件中,我执行swig来创建包装器。
我使用命令行执行此操作:
swig -python -c++ -o py_myclass_wrap.cpp py_myclass.i
这给我带来了以下错误:
py_myclass.i:13: Error: Syntax error - possibly a missing semicolon.
那么,有没有办法用swig来完成这种初始化呢?
我还试着加了一行
%ignore toto;
在最后一个之前
%include "my_class.hpp"
在文件中
py_myclass。我
,但似乎忽略了它本身。