启动我的应用程序时遇到问题:
dyld: Symbol not found: __ZN5mongo2LTE
Referenced from: /usr/local/lib/libcrails-mongodb.dylib
Expected in: flat namespace
in /usr/local/lib/libcrails-mongodb.dylib
如果我使用nm搜索符号__ZN5mongo2LTE
,我会找到以下匹配项:
$: nm -A /usr/local/lib/libcrails-mongodb.dylib | grep __ZN5mongo2LTE
/usr/local/lib/libcrails-mongodb.dylib: U __ZN5mongo2LTE
如果我的理解是正确的,这意味着该符号被引用,但未被解决。
现在,如果我查看另一个也链接到我的项目的库:
$: nm -A /usr/lib/libmongoclient.a | grep __ZN5mongo2LTE
/usr/lib/libmongoclient.a:jsobj.o: 00000000000eca00 S __ZN5mongo2LTE
同样,根据我的理解,这意味着符号存在于给定地址的同一个库中。
我错了吗?如果没有,那么为什么没有找到符号"" ?
答案 0 :(得分:1)
似乎需要访问libmongoclient.dylib
或libmongoclient.so
。
libcrails-mongodb.dylib
与libmongoclient
动态链接动态,因此无法找到符号,但有静态libmongoclient.a
。
您可以尝试使用libcrails-mongodb
静态重新编译libmongoclient.a
,或找到libmongoclient
的动态库,通常为libmongoclient.dylib
或libmongoclient.so
。