未定义的符号引用,即使nm表示该符号存在于共享库2中

时间:2013-04-06 09:52:26

标签: linker g++ undefined-reference dynamic-library

我在这里找到了相同的question,但答案对我没有帮助。

我正在编写测试应用程序以使用nglib库。但是当我尝试编译它时,我得到了未定义的引用:

$ g++ test1.cpp -L. -lnglib
test1.cpp: In function ‘int main()’:
/tmp/cchcKZfx.o:test1.cpp:function main: error: undefined reference to 'Ng_Init()'
/tmp/cchcKZfx.o:test1.cpp:function main: error: undefined reference to 'Ng_NewMesh()'
...
/tmp/cchcKZfx.o:test1.cpp:function main: error: undefined reference to 'Ng_Exit()'
collect2: ld returned 1 exit status

但是例如当我在libnglib.so中搜索Ng_Init()时,我得到了积极的结果。

$ nm -D libnglib.so | grep Ng_Init
000000000008d0d0 T _ZN5nglib7Ng_InitEv

所以我很困惑为什么我会得到未定义的引用错误?!

1 个答案:

答案 0 :(得分:3)

_ZN5nglib7Ng_InitEv解密到nglib::Ng_Init(),与Ng_Init()不同。