2011-08-30 58 views
0

我正在使用SWIG为我的C++类库创建一个Python接口。Python中Swig生成的常量

我不能解决如何利用Python中的SWIG创建的常量。我甚至无法打印他们的价值。

例如,在Python这两个打印语句失败默默...

print CONST1 
print rep (CONST1) 

C++,我有这个

#define CONST1 0x20000 
const int CONST2 = 0x20000; // No different to #define in SWIG-generated code. 

如果我把创建的Python模块由SWIG它有这样的东西...

CONST1 = _theCPPlibrary.CONST1 

此外,我尝试使用SWIG%常量指令作为一个实验(如果我可以避免它,我真的不想使用它,因为它涉及在SWIG输入文件中复制我的常量)。 %常量指令也给出了相同的结果。

我是C++程序员,也是Python中的noob。

回答

1

构建完成后,您将获得一个python源文件:theCPPlibrary.py和一个pyd文件:_theCPPlibrary.pyd。你必须先导入Python模块:

import theCPPlibrary 

CONST1被定义的#define,它可以通过访问:

print theCPPlibrary.CONST1 

CONST2由常量定义,岂不等于一个全局变量,它的访问通过:

print theCPPlibrary.cvar.CONST2 
+0

我没有用库名前缀。谢谢! – bluedog