0
我有一個C++庫和一些C應用程序代碼。在C++庫,有一個函數調用C應用程序的功能:從C++庫代碼到C應用程序代碼:符號查找錯誤
源代碼在C++庫:
extern "C" {
void foo();
}
...
void bar() { foo();}
而且在我的C代碼:
void foo() {
...
}
而且符號表這兩個可執行文件:
readelf -sW C_application | grep foo
71: 0000000000400b10 1159 FUNC GLOBAL DEFAULT 13 foo
readelf -sW libcpp_library.so | grep foo
11: 0000000000000000 0 NOTYPE GLOBAL DEFAULT foo
但是,當我執行C應用程序如:
LD_PRELOAD="/home/asd/libcpp_library.so" ./C_application
我得到了以下錯誤:
./C_application: symbol lookup error: /home/asd/libcpp_library.so : undefined symbol: foo
我不知道這裏有什麼問題,所以任何人都可以擺脫對這一問題的潛在原因一些輕?
有什麼地方有'foo'的定義?你給了一個'bar',這是無關緊要的。 –
@EugeneSh。是的,當然,在'C'應用程序代碼中有'foo'的定義。 – computereasy
顯示您的鏈接命令 – pm100