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