2

我已经搜索了几个小时,但我仍然不知道我的配置有什么问题。我的项目使用了一个自写的库(myLib)。该库被编译为适用于模拟器,并且在那里完美运行。

有什么需要改变的,所以它也可以为我的iPhone 设备编译?

这是我目前的警告:

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

这是我的配置(myLib.a)

替代文字

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

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


为了让我的图书馆在我的 iPhone 上运行,我需要进行哪些更改?

谢谢


编辑:

到目前为止我做了什么:

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

结果:

这在模拟器中有效,但将活动 sdk 设置为设备仍然会引发file is not of required architecture错误。

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

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

4

3 回答 3

3

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

于 2009-10-16T14:35:51.843 回答
1

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

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

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

于 2009-10-11T07:14:43.917 回答
0

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

  1. 将静态库项目拖入app项目的framework组
  2. 应用程序项目中目标的“获取信息”
  3. 设置静态库的直接依赖
  4. 清理静态库项目中所有不必要的构建(例如模拟器构建)
  5. 在应用程序项目中构建
于 2010-07-05T03:43:40.203 回答