2014-10-28 55 views
0

啓動我的應用程序時,我有一個問題,一個給定的符號:如何提供使用鏘和MacOSX的

dyld: Symbol not found: __ZN5mongo2LTE 
    Referenced from: /usr/local/lib/libcrails-mongodb.dylib 
    Expected in: flat namespace 
in /usr/local/lib/libcrails-mongodb.dylib 

如果我要尋找的符號使用納米__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

爲什麼要鏈接同一個庫的靜態和動態版本? – trojanfoe 2014-10-28 11:51:03

回答

1

好像需要訪問libmongoclient.dyliblibmongoclient.so

libcrails-mongodb.dylib鏈接動態libmongoclient,因此它找不到符號,雖然有靜態libmongoclient.a
您可以嘗試使用libmongoclient.a靜態地重新編譯libcrails-mongodb,或查找動態庫libmongoclient,通常爲libmongoclient.dyliblibmongoclient.so

+0

我還沒有解決這個問題,但這非常有意義,我現在將其標記爲有效:D!謝謝您的幫助 ! – user3387633 2014-10-28 12:48:33