Python中的SWIG生成常量

0 投票
1 回答
862 浏览
提问于 2025-04-17 00:37

我正在使用SWIG来为我的C++类库创建一个Python接口。

我不知道怎么在Python中使用SWIG创建的常量。我甚至无法打印出它们的值。

比如,这两条Python的打印语句都没有任何反应...

print CONST1
print rep (CONST1)

C++中,我有这样的代码

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

如果我查看SWIG创建的Python模块,里面有这样的内容...

CONST1 = _theCPPlibrary.CONST1

另外,我还尝试使用SWIG的%constant指令来做实验(如果可以避免的话,我其实不想使用这个,因为它需要在SWIG输入文件中重复我的常量)。%constant指令的结果也是一样的。

我是一名C++程序员,对Python还是个新手。

1 个回答

1

构建完成后,你会得到一个Python源文件:theCPPlibrary.py,还有一个pyd文件:_theCPPlibrary.pyd。你必须先导入这个Python模块:

import theCPPlibrary

CONST1是通过#define定义的,可以这样访问:

print theCPPlibrary.CONST1

CONST2是通过const定义的,它不是全局变量,可以这样访问:

print theCPPlibrary.cvar.CONST2

撰写回答