错误:"文件是为归档而构建的,而不是被链接的架构(armv7s)"

Tho*_*sen 42 xcode static-libraries armv7 ios

我已经构建了自己的静态C++库,它使用以下设置构建:

  • 架构:armv7,armv7s
  • 仅构建活动架构:否
  • 支持平台:iOS
  • 有效的架构:armv7,armv7s

库项目构建良好,我得到.a文件(我已经清理了构建文件夹并再次构建项目以确保我的设置有效).

我已将库(.a文件)添加到我的iOS项目中,但即使我在iOS项目中设置了完全相同的设置,项目也无法构建:

  • 架构:armv7s,armv7
  • 仅构建活动架构:是的
  • 支持平台:iOS
  • 有效的架构:armv7,armv7s

我一直收到这个错误:

LD:警告:忽略文件 /Users/hidden/Library/Developer/Xcode/DerivedData/HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libHelloWorldCppLib.a,文件归档建这不是架构被链接(armv7s) : /Users/hidden/Library/Developer/Xcode/DerivedData/HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libHelloWorldCppLib.a

我错过了什么?它告诉我.a文件不是为armv7s构建的,但这正是我用库构建的设置.

Buz*_*zzy 36

我自己遇到了类似的问题.@graver的解决方案绝对有效.

问题是图书馆的建立是为了armv7而不是armv7s.您可以使用自己验证lipo <path/to/lib.a> -info.

设置Build Active Architectures Only选项以No修复问题.

希望这可以帮助.


gra*_*ver 33

在构建库时,必须为模拟器和设备编译它,然后将两个输出(.a文件)合并到1个库中,然后将其链接到iOS项目.

  • 这就是诀窍!我在终端运行了这个:`lipo -create libHelloWorldCppLibPhone.a libHelloWorldCppLibSimulator.a -output libHelloWorldCppLib.a`并将合并后的结果导入我的iOS项目. (18认同)

lbs*_*eek 23

另外一个注意事项是:

    Build Active Architectures Only  set to no
Run Code Online (Sandbox Code Playgroud)

是为了lib项目.


Kev*_*OUX 7

使用cocapods时,我得到了完全相同的错误:对我来说,解决方案是为目标和pod设置两个不同的Build Active Architecture.

应用目标:

Build Active Architectures Only  **Yes**
Run Code Online (Sandbox Code Playgroud)

豆荚目标

Build Active Architectures Only  **No**
Run Code Online (Sandbox Code Playgroud)