0

我已经使用 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 库?

4

2 回答 2

0

所以经过一些额外的修改后,看起来问题确实是我使用 llvm-g++ 来编译静态库并使用 clang 来构建应用程序。将应用程序的编译器更改为 llvm-g++ 有效。谢谢大家!

于 2013-05-17T18:31:41.863 回答
0

我猜这个库是 C++ 代码,而您正试图从 Objective-C(或 C)文件中访问它。您需要使用“C++”文件 (xxx.cc) 或 Objective-C++ (xxx.mm) 类为其创建某种缓冲区。

于 2013-05-17T17:57:10.077 回答