我有一个 C++ 库和一个 C++ 应用程序,尝试使用从该库导出的函数和类。该库构建良好,应用程序可以编译,但无法链接。我得到的错误遵循以下形式:
app-source-file.cpp:(.text+0x2fdb): 对 `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-namespace 中调用它,但您可能在另一个名称空间中定义它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)