我正在尝试使用SWIG为我无法控制源的库生成python接口模块。出于某种原因,图书馆有这一行:
#define VOID void
这引起了SWIG的各种问题;它似乎认为VOID是这些函数将返回的实际对象。
有什么办法可以告诉SWIG VOID
表示void
?
答案 0 :(得分:1)
当我创建SWIG界面文件时,我逐字复制了函数原型,VOID
等等。如果我将界面文件中的所有原型从使用VOID
更改为使用void
,问题就会消失。
似乎SWIG确实尊重预处理器,而不是它自己的接口文件,这是可以理解的。
将此发布给未来的搜索者......
答案 1 :(得分:0)
等一下......如果你没有库的源代码,我假设你的意思是#define VOID void
发生在你要包含的标题(.H)文件中图书馆。如果库已经编译,那么#define VOID void
不会影响它,并且仅与这些标题相关。 #define
指令仅影响您的预处理器,它会编译您的代码(库已经构建)。因此,如果只有那些标头使用VOID,请确保在这些标头中,顶部有#define VOID void
,底部有#undef VOID
以删除VOID宏。