2014-03-19 89 views
0
a.out call function fooA() using dlopen function to open libA.so. 
fooA() is defined in libA.so //dynamic library 
fooA() call function fooB(); 
fooB() is defined in libB.a //statistic library 
fooB() call function fooC(); 
fooC() is defined in libC.so //dynamic library 
libA.so libB.a libC.so are not in the same folder. 
**** 

這是確定當我編譯他們。但我得到運行時錯誤,這是「符號查找錯誤:libA.so:未定義的符號:fooC()」。我不知道爲什麼。以及如何解決動態庫和統計庫之間調用函數的問題?如何處理符號查找錯誤?

對不起。我的英語很差。我不知道我是否清楚地描述了自己的問題。

+1

'ldd libA.so'的輸出是什麼?你有沒有把它與'libB'和'libC'聯繫起來? – keltar

回答

0

你的二進制文件是否帶有libC.so文件? (直接或通過dlopen()RTLD_GLOBAL)?如果沒有,那是你的問題。

libA.so應該建立鏈接到libC(而不是)。