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