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