我使用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库?
答案 0 :(得分:0)
我猜这个库是C ++代码,你试图从Objective-C(或C)文件访问它。您需要使用“C ++”文件(xxx.cc)或Objective-C ++(xxx.mm)类为其创建某种缓冲区。
答案 1 :(得分:0)
因此,经过一些额外的修补,看起来问题确实是我使用llvm-g ++来编译静态库并使用clang来构建应用程序。将应用程序的编译器更改为llvm-g ++。谢谢大家!