2 つの C 静的ライブラリがlibA
ありlibB
、実行可能ファイルに対してリンクしていますE
。
libA
にある関数を呼び出す関数がありますlibB
:
myLibAFunctionThatCallsAfunctionInLibB( ... )
{ libB_function(...); }
どちらのライブラリも正常にコンパイルされます。私の実行可能ファイルE
も正常にコンパイルされます。適切なおよびパスのフラグをE
使用して gcc でコンパイルされます。-lA -lB
-I
-L
myLibAFunctionThatCallsAfunctionInLibB
が呼び出されると、実行時に問題が発生します。次のエラーが表示されます。
dyld: lazy symbol binding failed: Symbol not found: _libB_function
Referenced from: libA.dylib
Expected in: flat namespace
すべてのアーキテクチャが同じであることを確認しました (i386)。が実際に の一部であることもnm -a libB.a
示しています。as inと宣言してみましたが、違いはありませんでした。それが発生した場合、私はosx 10.6でgcc 4.2.1を使用しています。libB_function
libB
libB_function(...);
extern
libA
私がやろうとしている方法でライブラリを相互参照することは不可能ですか? ライブラリlibB_function
にの実装コードを含める必要がありますか?libA
ありがとう
ババ