0
私はC++ライブラリといくつかのCアプリケーションコードを持っています。 C++ライブラリでC++ライブラリコードからCアプリケーションコードへ:シンボル検索エラー
ソースコード:
extern "C" {
void foo();
}
...
void bar() { foo();}
そして、私のCコードで:
void foo() {
...
}
また、シンボルテーブルC++ライブラリでは、Cのアプリケーション機能への関数呼び出しがあります
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 appliationのように実行すると:
LD_PRELOAD="/home/asd/libcpp_library.so" ./C_application
私は、次のエラーを得た:
./C_application: symbol lookup error: /home/asd/libcpp_library.so : undefined symbol: foo
私はここで何が間違っている見当がつかないので、誰もが、この問題の潜在的な原因にはいくつかの光を当てることができますか?
どこかに 'foo'の定義がありますか?あなたは 'bar'に1つ与えました。これは無関係です。 –
@EugeneSh。もちろん、 'C'アプリケーションコードに' foo'の定義があります。 – computereasy
あなたのリンクコマンドを表示 – pm100