gpt4 book ai didi

c - 使用静态库编译的共享库中 undefined symbol

转载 作者:行者123 更新时间:2023-11-30 17:30:48 24 4
gpt4 key购买 nike

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

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

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

nm libB.so 说:

U foo

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

有人有解决这个问题的想法或技巧吗?

谢谢。

最佳答案

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

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

关于c - 使用静态库编译的共享库中 undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24931630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com