2017-07-10 5 views
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 

私はここで何が間違っている見当がつかないので、誰もが、この問題の潜在的な原因にはいくつかの光を当てることができますか?

+0

どこかに 'foo'の定義がありますか?あなたは 'bar'に1つ与えました。これは無関係です。 –

+0

@EugeneSh。もちろん、 'C'アプリケーションコードに' foo'の定義があります。 – computereasy

+1

あなたのリンクコマンドを表示 – pm100

答えて