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_functionlibBlibB_function(...);externlibA
私がやろうとしている方法でライブラリを相互参照することは不可能ですか? ライブラリlibB_functionにの実装コードを含める必要がありますか?libA
ありがとう
ババ