iPhone库:文件不是必需的架构

时间:2009-10-09 09:51:32

标签: iphone linker-errors

我搜索了几个小时,但我仍然不知道我的配置有什么问题。 我的项目使用自编写的libray(myLib)。这个库被编译为模拟器 ,它在那里工作得很好。

必须更改哪些内容以便为我的 iPhone设备进行编译?

这是我目前的警告:

ld: warning: in /.../myLib.a, file is not of required architecture

这是我的配置(myLib.a)

alt text

我发现很多文章解释了这个错误的原因,但我找不到解决方案:

  

模拟器在x86上运行   架构,而设备使用   ARM架构。


我需要更改什么才能让我的库在iPhone上运行?

由于


编辑:

到目前为止我做了什么:

  1. 清理了两个项目
  2. 将库设置为“设备”(3.1)
  3. 建立图书馆
  4. 将我的库的.a文件拖到我的应用程序中
  5. 结果:

    这适用于模拟器,但将活动的sdk设置为设备仍然会引发file is not of required architecture错误。

    我也尝试了mahboudz(感谢您的支持)link。 它解释了如何使用shell脚本构建项目。 但是,XCode一直在抱怨库文件架构错误,构建失败。

    这一定是一个非常愚蠢的初学者错误。

3 个答案:

答案 0 :(得分:3)

您需要将.a文件(为设备构建的文件(build / $ config-iphoneos))和为sim(build / $ config-iphonesimulator)构建的文件添加到新项目中。确保在放入它们之前对它们进行不同的命名。这就是admob和类似产品提供静态库的方式。

答案 1 :(得分:1)

你需要为英特尔编译你的库,以便模拟器可以使用它(我已经收集你已经完成),然后为ARM编译它,这样它就可以在iPhone上运行。然后你必须合并这两个库。有不同的方法可以实现这一目标,或者使其更加自动化。

以下是一些可以帮助您的链接:

http://blog.stormyprods.com/2008/11/using-static-libraries-with-iphone-sdk.html http://www.clintharris.net/2009/iphone-app-shared-libraries/

答案 2 :(得分:0)

我也遇到了同样的问题。但似乎您不需要将两个.a文件拖到应用程序项目中以解决此问题。这就是我所做的:

  1. 将静态库项目拖到app project的框架组
  2. “获取应用项目中目标的信息”
  3. 设置静态库的直接依赖关系
  4. 在静态库项目中清除所有不必要的构建(例如模拟器构建)
  5. 构建应用项目