我在一个可执行项目中使用它将不同的库链接在一起有一个问题。
假设项目A包含一个名为foo()
的函数;它被编译为一个静态库。
项目B包含一个名为bar()
的函数,包含来自a的头文件,并与-Wl
, --whole-archive libA.a -Wl
, --no-whole-archive flags
编译为共享库。
libB。so被移到/usr/lib
.
现在,C项目包含B.h
,调用bar()
,但由于对项目a中定义的foo()
函数的未定义引用的原因而未编译。
libB.so
说:U foo
我使用的是gcc,编程语言是C, IDE是Eclipse CDT。
谁有解决这个问题的主意或建议?
谢谢。
多亏了Icarus3的贡献,这个问题才得以解决。
ProjectA中的一些函数使用了restrict关键字,因此使用-std=gnu99进行编译。事实证明,从代码中去掉这个关键字,并从编译命令中去掉-std=gnu99,最终解决了问题。