gpt4 book ai didi

c++ - GCC 和 ld 找不到导出的符号......但它们在那里

转载 作者:IT王子 更新时间:2023-10-29 00:57:12 26 4
gpt4 key购买 nike

我有一个 C++ 库和一个试图使用从该库导出的函数和类的 C++ 应用程序。该库构建良好,应用程序编译但无法链接。我得到的错误遵循这种形式:

app-source-file.cpp:(.text+0x2fdb): undefined reference to `lib-namespace::GetStatusStr(int)'

链接器似乎很好地解析了库中的类,但自由函数和导出的数据(如余弦查找表)总是会导致上述错误。

我使用的是 Ubuntu 8.04 (Hardy),它是最新的 Ubuntu 软件包。

链接库的命令是(删除其他库):

g++ -fPIC -Wall -O3 -shared -Wl,-soname,lib-in-question.so -o ~/project/lib/release/lib-in-question.so

链接应用程序的命令是(删除其他库):

g++ -fPIC -Wall -O3  -L~/project/lib/release -llib-in-question -o ~/project/release/app-in-question

最后,似乎(据我所知)所讨论的符号已正确导出:

nm -D ~/project/lib/release/lib-in-question.so | grep GetStatusStr --> U _ZN3lib-namespace12GetStatusStrEi

最佳答案

nm 输出中 _ZN3lib-namespace12GetStatusStrEi 之前的 U 表明该符号在库中是未定义

也许它是在错误的命名空间中定义的:看起来您是在 lib-namepace 中调用它,但您可能是在另一个命名空间中定义它。

关于c++ - GCC 和 ld 找不到导出的符号......但它们在那里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/216450/

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