2

错误是..

Undefined symbols for architecture armv7s:
   "ABCD_Initialize(ABCD_data_type*)", referenced from:
       -[MyViewController doSomething] in MyViewController.o
   ld: symbol(s) not found for architecture armv7s
   clang: error: linker command failed with exit code 1 (use -v to see invocation)

我想列出我所做的一切

ABCD_Initialize 是我添加的静态库的头文件中的一个函数。

  1. 检查了几乎所有相关的问题。
  2. 添加了所有文件以正确定位。
  3. 在构建阶段链接 FAT 文件(.a 文件)
  4. FAT 文件上的 lipo 表示它对 armv6 armv7 和 armv7s 有效
  5. 将“仅构建活动架构”设置为“是”。
  6. 添加了与 FAT 文件相关的 .h 文件
  7. 重新启动 Xcode,Mac 等 :)

关于我的应用程序的一些事情

  1. 创建了一个工作区
  2. 向工作区添加了一些其他相关的 .xcodeproj 文件。
  3. 添加了 FAT 文件(C++ 的)并在构建阶段链接
  4. 在其他链接器标志中设置 -ObjC 标志(以加载静态存档库的所有成员)

环境规格

山狮 + Xcode 4.6 + iOS SDK 6.1

如果您需要更多信息,请与我们联系。任何帮助表示赞赏。

谢谢

J0k3r

4

1 回答 1

5

我最初的回答:

我会说第5步是不正确的。

如果您正在构建一个库,您希望构建所有架构,而不仅仅是“活动架构”。

将其设置为“ NO”,看看效果如何。

我的第二个回答:

另外,请确保您extern "C"在库函数声明中添加了 ":

#ifdef __cplusplus
extern "C" {
#endif

ABCD_Initialize(ABCD_data_type*);

#ifdef __cplusplus
}
#endif

当符号链接到您的应用程序时,这有助于对符号进行分解。这是一个相关的问题,对正在发生的事情进行了很好的解释

于 2013-04-01T11:15:57.270 回答