我有两个 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表明libB_function实际上是libB. 我尝试过声明libB_function(...);为externinlibA没有区别。如果发生这种情况,我在 osx 10.6 上使用 gcc 4.2.1。
是不是不可能像我尝试的那样交叉引用库?libB_function我必须在我的libA库中包含实现代码吗?
谢谢
爸爸