2017-05-24 5 views
0

.soライブラリをロードする場合は、dlopen()を使用してください。図書館はmyfunc()と呼んでいます。この機能は、ローダーのバージョン1.0で利用できます。したがって、myfunc()を呼び出すことができます。しかしながら、バージョン0.9では、myfunc()はなく、libdlは、遅延結合障害に関するエラーを示す。dlopen遅延バインディングの失敗を防ぐために、シンボルが使用可能かどうかを確認してください。

so.ライブラリ内でmyfunc()が存在するかどうかを確認してから、関数を呼び出すことはできますか?この関数は必須ではなく、重要ではありません。ローダーがバージョン0.9またはそれ以下であれば安全に呼び出すことができます。

答えて

0

オンとELFプラットフォーム、あなたがあなたの目標を達成するために、弱い未解決の参照を使用することができます。

// libfoo.c 
extern int myfunc() __attribute__((weak)); 
int foo() 
{ 
    if (&myfunc == NULL) { 
    printf("myfunc is not defined\n"); 
    } else { 
    // myfunc is available, call it 
    printf ("myfunc returns %d\n", myfunc()); 
    } 
} 
関連する問題