架构 armv7 的未定义符号:用于外部 C 库

Posted

技术标签:

【中文标题】架构 armv7 的未定义符号:用于外部 C 库【英文标题】:Undefined symbols for architecture armv7: for external C library 【发布时间】:2012-10-02 10:15:19 【问题描述】:

我下载了一个用于音频编解码器的 C 库,我对其进行编译并将其添加到我的项目中。

现在,每次我尝试使用它时,它都会给我一个 Undefined symbols for architecture armv7: error when I try to call the library of the methods之一。

可能是什么问题?是否需要编译针对 armv7 的库?

【问题讨论】:

请粘贴完整的消息错误 架构 armv7s 的未定义符号:“_opus_encoder_create”,引用自:-[ViewController viewDidLoad] in ViewController.o 尝试将构建设置中的架构从架构 arm7s 更改为架构 arm7,只需删除 s 后缀,看看会发生什么。它不会解决您的目标架构问题,但可以让您同时运行项目。 我只是使用了./configure 和make,我不知道如何为amrv7 编译特定的。如果我使用模拟器也会发生同样的情况,它显示相同的 msg 但针对 i386 【参考方案1】:

您似乎已经设置了您的 XCode 项目,以便为 armv7armv7s 架构编译(注意最后是 s)。但是,C 库的项目只为armv7 编译。

要解决此问题,请更改库项目以使其同时针对两种架构进行编译,或者将应用程序项目更改为仅针对 armv7 进行编译。

我会选择第二个选项,因为目前不需要 armv7s 支持,而且很少有设备可以使用它。

更新:

如果您在模拟器中也收到相同的消息,那么您的库项目也不会针对“i386”进行编译(仅模拟器需要)。这表明您的 C 库项目根本没有设置为针对多个体系结构进行编译。所以第二种选择(而不是使用模拟器)是最简单的方法。

【讨论】:

armv7 也出现了同样的情况,如何为这些拱门编译它? 我想你需要分析一下 configuremake 到底在做什么。他们似乎为您的 Mac 而不是为 iPhone 或 iPhone 模拟器编译库。您是否有任何表明支持 iPhone 的文档?

以上是关于架构 armv7 的未定义符号:用于外部 C 库的主要内容,如果未能解决你的问题,请参考以下文章

静态库链接错误。架构 armv7s 的未定义符号

架构 armv7 的未定义符号

架构armv7的未定义符号?

XCode 5 - 架构 armv7 的未定义符号:

架构armv7的未定义符号?这个错误是啥意思?

架构 armv7 的未定义符号