我可以#define无效的swig库吗?

时间:2013-02-12 16:40:02

标签: python c swig

我正在尝试使用SWIG为我无法控制源的库生成python接口模块。出于某种原因,图书馆有这一行:

#define VOID void

这引起了SWIG的各种问题;它似乎认为VOID是这些函数将返回的实际对象。

有什么办法可以告诉SWIG VOID表示void

2 个答案:

答案 0 :(得分:1)

当我创建SWIG界面文件时,我逐字复制了函数原型,VOID等等。如果我将界面文件中的所有原型从使用VOID更改为使用void,问题就会消失。

似乎SWIG确实尊重预处理器,而不是它自己的接口文件,这是可以理解的。

将此发布给未来的搜索者......

答案 1 :(得分:0)

等一下......如果你没有库的源代码,我假设你的意思是#define VOID void发生在你要包含的标题(.H)文件中图书馆。如果库已经编译,那么#define VOID void不会影响它,并且仅与这些标题相关。 #define指令仅影响您的预处理器,它会编译您的代码(库已经构建)。因此,如果只有那些标头使用VOID,请确保在这些标头中,顶部有#define VOID void,底部有#undef VOID以删除VOID宏。