首页 文章

ios static library体系结构x86_64的未定义符号

提问于
浏览
0

lipo -info libXxxx.a胖文件中的体系结构:libXxxx.a是:armv7 i386 arm64

但依赖项目中的编译器给出了链接错误,

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_ClassXXXX", referenced from:
      objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我错过了什么吗?所有lib项目的目标都有架构:标准架构(armv7,arm64)和有效架构arm64,armv7,armv7s

在制作通用二进制文件时我的lipo命令我从iphonesimulator和iphoneos文件夹中解脱 .

2 回答

  • 0

    您需要在静态库项目中创建通用二进制文件,包括以下体系结构 . 架构应该包括64位,armv7,armv7s,arm64 .

    现在当你在终端上执行lipo -info anyStaticLibrary.a时 - 你应该看到你的胖二进制文件的armv7 armv7s i386 x86_64 arm64架构 .

    另请注意,使用上述静态库的项目可以使用体系结构的默认设置正常工作 .

  • 0

    您的主要线索是它表示“未找到架构x86_64的符号”而不是“未找到架构i386的符号” .

    修复方法是调整构建设置以允许32位构建 .

    1)在Project Navigator(左侧边栏)中选择项目文件

    2)选择项目的目标(刚刚出现的面板中TARGETS下的第一个条目)

    3)找到“架构”设置(如果找不到“架构”,请确保选中“全部”)

    4)将其从“标准体系结构”更改为“通用”(或者如果您愿意,可以明确地将其更改为“32位”)

    这样做之后你应该能够构建 .

相关问题