架构 arm64 的未定义符号:Xcode 12
Undefined symbols for architecture arm64: Xcode 12
我试图在添加第 3 方框架后构建项目,但是在添加框架后我无法编译项目,我得到 Undefined symbols for architecture arm64: error when我尝试在设备上编译,但我可以在模拟器上编译。我已经尝试了我在 Whosebug 上找到的所有其他解决方案。感谢您的帮助!
这是我尝试过的:
- 在排除的架构中添加了任何 iOS 值为 arm64 的模拟器 SDK。
- 我在 Other Linker Flags
中确实有 $(inherited)
- 将启用位码设置为否
None 我尝试过的解决方案对我有用。
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_*", referenced from:
objc-class-ref in frameworkName.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
尝试将其添加到您的 pod 文件
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES'
end
end
end
我发现了问题。
我的项目支持比框架更低的最低部署目标,这导致了这个问题。我必须包含从特定 iOS 版本开始的框架。
这是场景和问题:我的项目支持 iOS 9,框架支持从 9.1 开始。出于这个原因,我没有获得最新的框架,而是 Cocoapods 下载了不支持 arm64 的旧版本框架。
所以暂时我只包含了 iOS 9.1 及更高版本的框架:
platform :ios, '9.1'
pod 'PodName', '~> 3.2'
然后项目编译正常,感谢那些试图提供帮助的人。为此我花了半天时间,我把它放在这里供可能遇到同样问题的任何人使用。
忘记可能会影响其他开发的应用程序的复杂答案,因为您更改了 XCODE 内部。
根据我的经验,发生这种情况是因为您更新版本时会复制项目,这是最简单的方法。
在 BUILD SETTINGS 选项卡中将“启用模块(C 和 Objetive -C)”参数设置为 YES 后问题就解决了。
我还建议比较 BUILD SETTINGS 参数(有很多但比重建项目要快...我不明白为什么 Apple 把它弄得这么复杂) beetween projects than work ok.
- “产品”->“方案”->“编辑方案”
- select“构建”
- 取消选中“并行构建”
有很多可能的原因,最后的armv7版本停留在iOS10。
所以对我来说:
我尝试使用没有 'armv7' 的“有效架构”,Xcode 12 中不再存在。
接下来我尝试了 ONLY_ACTIVE_ARCH,我知道这将导致我最终无法存档我的应用程序
最后,我搜索了我本地的 podspec,找到了
s.ios.deployment_target = "10.0"
由于我的主应用程序的最小部署目标设置为 iOS11。所以我设置
s.ios.deployment_target = "11.0"
Xcode 不再抱怨这个 armv7。
希望这会对某人有所帮助,检查您的框架或任何依赖项,确保它们设置正确。
我发现将有此错误的文件的目标成员设置为目标很有帮助。单击产生此错误的文件,Xcode 右侧有检查器。在检查器中显示目标成员资格。如果文件当前不属于您想要的任何目标成员 select。
我试图在添加第 3 方框架后构建项目,但是在添加框架后我无法编译项目,我得到 Undefined symbols for architecture arm64: error when我尝试在设备上编译,但我可以在模拟器上编译。我已经尝试了我在 Whosebug 上找到的所有其他解决方案。感谢您的帮助!
这是我尝试过的:
- 在排除的架构中添加了任何 iOS 值为 arm64 的模拟器 SDK。
- 我在 Other Linker Flags 中确实有 $(inherited)
- 将启用位码设置为否
None 我尝试过的解决方案对我有用。
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_*", referenced from:
objc-class-ref in frameworkName.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
尝试将其添加到您的 pod 文件
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES'
end
end
end
我发现了问题。
我的项目支持比框架更低的最低部署目标,这导致了这个问题。我必须包含从特定 iOS 版本开始的框架。
这是场景和问题:我的项目支持 iOS 9,框架支持从 9.1 开始。出于这个原因,我没有获得最新的框架,而是 Cocoapods 下载了不支持 arm64 的旧版本框架。
所以暂时我只包含了 iOS 9.1 及更高版本的框架:
platform :ios, '9.1'
pod 'PodName', '~> 3.2'
然后项目编译正常,感谢那些试图提供帮助的人。为此我花了半天时间,我把它放在这里供可能遇到同样问题的任何人使用。
忘记可能会影响其他开发的应用程序的复杂答案,因为您更改了 XCODE 内部。
根据我的经验,发生这种情况是因为您更新版本时会复制项目,这是最简单的方法。
在 BUILD SETTINGS 选项卡中将“启用模块(C 和 Objetive -C)”参数设置为 YES 后问题就解决了。
我还建议比较 BUILD SETTINGS 参数(有很多但比重建项目要快...我不明白为什么 Apple 把它弄得这么复杂) beetween projects than work ok.
- “产品”->“方案”->“编辑方案”
- select“构建”
- 取消选中“并行构建”
有很多可能的原因,最后的armv7版本停留在iOS10。 所以对我来说:
我尝试使用没有 'armv7' 的“有效架构”,Xcode 12 中不再存在。
接下来我尝试了 ONLY_ACTIVE_ARCH,我知道这将导致我最终无法存档我的应用程序
最后,我搜索了我本地的 podspec,找到了
s.ios.deployment_target = "10.0"
由于我的主应用程序的最小部署目标设置为 iOS11。所以我设置
s.ios.deployment_target = "11.0"
Xcode 不再抱怨这个 armv7。
希望这会对某人有所帮助,检查您的框架或任何依赖项,确保它们设置正确。
我发现将有此错误的文件的目标成员设置为目标很有帮助。单击产生此错误的文件,Xcode 右侧有检查器。在检查器中显示目标成员资格。如果文件当前不属于您想要的任何目标成员 select。