我使用llvm-g++-4.2通过命令行编译了一个静态库。当我试图链接到那个库并在XCode中构建一个应用程序时,我得到这个:
Undefined symbols for architecture armv7: (null): "__ZN12NamespaceOne5NamespaceTwo10NamespaceThree11functionEPDv2_x", referenced from: ...
(注意,我混淆了实际的名称空间和函数名)
当我使用nm查看库时,我看到如下:
000007cc T __ZN12NamespaceOne5NamespaceTwo10NamespaceThree11functionEPU8__vectorx
方法是定义的,但是在末尾修改后的名称略有不同。是不是XCode(使用clang++)不喜欢我的llvm-g++-4.2库?
我猜这个库是c++代码,你正试图从Objective-C(或C)文件访问它。您需要使用"c++"文件(xxx.cc)或objective - c++ (xxx.mm)类为它创建某种缓冲区。
因此,经过一些额外的修补之后,看起来问题确实是我使用llvm-g++来编译静态库并使用clang来构建应用程序。将应用程序的编译器更改为llvm-g++有效。感谢所有!