繁体   English   中英

使用静态库编译的共享库中的未定义符号

[英]Undefined symbols in a shared library compiled with a static library

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

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

现在,项目C包含Bh ,调用bar() ,但是由于未定义对foo()函数的引用而未进行编译,而foo()函数是在项目A中定义的。

nm libB.so说:

U foo

我正在使用gcc,编程语言是C,IDE是Eclipse CDT。

有谁有解决这个问题的想法或建议吗?

谢谢。

感谢Icarus3的贡献,这个问题得到了解决。

ProjectA中的某些功能使用了strict关键字,因此使用-std = gnu99进行了编译。 事实证明,从代码中删除该关键字,从编译命令中删除-std = gnu99最终解决了该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM