iPhone库:文件不是必需的体系结构

iPhone库:文件不是必需的体系结构,iphone,linker-errors,Iphone,Linker Errors,我已经搜索了几个小时,但是我仍然不知道我的配置有什么问题。 我的项目使用自编库(myLib)。此库编译为仅适用于模拟器的,并且在那里工作得非常好 为了让它也能为我的iPhone设备编译,需要做哪些更改 这是我目前的警告: ld: warning: in /.../myLib.a, file is not of required architecture 这是我的配置(myLib.a) 我找到了很多解释此错误原因的文章,但我找不到解决方案: 模拟器在x86上运行 架构,而设备使用 ARM架构

我已经搜索了几个小时,但是我仍然不知道我的配置有什么问题。 我的项目使用自编库(myLib)。此库编译为仅适用于模拟器,并且在那里工作得非常好

为了让它也能为我的iPhone设备编译,需要做哪些更改

这是我目前的警告:

ld: warning: in /.../myLib.a, file is not of required architecture
这是我的配置(myLib.a)

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

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


要让我的库在iPhone上正常工作,我需要做哪些更改

谢谢


编辑:

到目前为止我所做的:

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

    这在模拟器中起作用,但将活动sdk设置为设备仍会引发一个
    文件,该文件不是必需的架构
    错误

    我也试过了(谢谢你的支持)。 它解释了如何使用shell脚本构建项目。 然而,XCode不断抱怨库文件的体系结构错误,构建失败


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

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

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


    您需要将两个.a文件都添加到新项目中,一个是为设备构建的文件(build/$config iphoneos),另一个是为sim卡构建的文件(build/$config iphonesimulator)。在把它们放进去之前,一定要给它们起不同的名字。这就是admob和类似产品发布静态LIB的方式

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

  • 将静态库项目拖动到应用程序项目的框架组中
  • “获取应用程序中目标项目的信息”
  • 设置静态库的直接依赖关系
  • 清除静态库项目中所有不必要的构建(例如模拟器构建)
  • 内置应用程序项目

  • 应用程序的配置是什么?应用程序与库具有相同的配置。(我找不到任何区别)。你需要什么附加信息?当你把库放到你的新应用程序中时,源位置是什么?LabBaly只是作为参考添加的。你也可以考虑将库项目添加到App Project中,以便两者一起构建。这可能有助于解决您遇到的任何差异。“6)为所有SDK目标(如模拟器、iPhone设备等)构建新的静态库。”您的第一个链接是我的问题。我不知道怎么做。你的第二个链接是关于类似的东西,但不是关于静态库。(除了指向stormyprods博客的链接)在项目菜单下,您的活动SDK会说什么?活动SDK:
    iPhone设备3.1(基本SDK)
    Active architecture:
    armv6
    我想我从来没有遇到过任何问题。我做了一个新项目,选择了Cocoa Touch库,然后为设备和模拟器构建。ARM和i386。这里有另一个地方可以看:如果您有这样的倾向,您可以使用lipo将这两个文件合并到一个universl二进制文件中