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文件夹中解脱。答案 0 :(得分:0)
你的主要线索是它说“找不到架构x86_64的符号”而不是“找不到架构i386的符号”。
修复方法是调整构建设置以允许32位构建。
1)在Project Navigator(左侧边栏)中选择项目文件
2)选择项目的目标(刚刚出现的面板中TARGETS下的第一个条目)
3)找到“架构”设置(如果找不到“架构”,请确保选中“全部”)
4)将其从“标准体系结构”更改为“通用”(如果您愿意,可以明确地将其更改为“32位”)
执行此操作后,您应该能够构建。
答案 1 :(得分:0)
您需要在静态库项目中创建包含以下体系结构的通用二进制文件。架构应该包括64位,armv7,armv7s,arm64。
现在当你在终端上执行lipo -info anyStaticLibrary.a时,你应该看到你的胖二进制文件的armv7 armv7s i386 x86_64 arm64架构。
另请注意,使用上述静态库的项目可以使用体系结构的默认设置正常工作。