0

我在一个可执行项目中使用它将不同的库链接在一起时遇到问题。

假设项目 A 包含一个名为foo();的函数。它被编译为静态库。
项目 B 包含一个名为 的函数bar(),包括来自 A 的头文件并编译为与-Wl--whole-archive libA.a -Wl、的共享库--no-whole-archive flags
libB.so 已移至/usr/lib.

现在,项目 C 包含B.h, 调用bar(),但由于未定义对foo()项目 A 中定义的函数的引用而没有编译。

nmlibB.so说:

U foo

我用的是gcc,编程语言是C,IDE是Eclipse CDT。

有没有人有解决这个问题的想法或提示?

谢谢你。

4

1 回答 1

0

感谢 Icarus3 的贡献,问题得到了限制。

ProjectA 中的一些函数使用了restrict 关键字,因此它是用-std=gnu99 编译的。事实证明,从代码中删除这个关键字和从编译命令中删除 -std=gnu99 最终解决了这个问题。

于 2014-07-25T13:59:57.387 回答