从两个不同的源文件链接到库时,Xcode中的重复符号错误

时间:2014-02-24 09:16:20

标签: c xcode

我在Xcode中创建了一个命令行项目。该项目包含“client.h”,“client.c”和“snap7.h”。 “snap7.h”具有名为“libsnap7.so”的动态库的所有定义。

“client.h”包含“snap7.h”,我可以构建一个可执行文件。

但是当我想在其他标题中使用“snap7.h”时,例如“bitfunctions.h”,则链接器会显示数百个错误,如:

duplicate symbol _errLibXXX in:
../x86_64/client.o
../x86_64/bitfunctions.o

“snap7.h”文件中的重复符号将是例如:

const int errLibInvalidParam  = -1;
const int errLibInvalidObject = -2;

“snap7.h”包含在“bitfunctions.h”中,如下所示:

#ifndef S7SnapClient_bitfunctions_h
#define S7SnapClient_bitfunctions_h

#include "snap7.h"
...
#endif

当我在linux机器上链接此代码时,也存在重复的符号错误,但我可以使用makefile中的链接器选项“-z muldefs”来抑制它们。是否有类似的功能,我可以在Xcode中使用,或任何其他建议如何解决这个问题? 提前谢谢。

0 个答案:

没有答案