3

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

#define VOID void

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

有什么办法可以告诉 SWIG 这VOID意味着void什么?

4

2 回答 2

1

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

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

在此处发布此内容以供将来的搜索者使用...

于 2013-02-12T17:22:37.573 回答
0

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

于 2013-02-12T17:01:00.613 回答