带有动态库的 32 位应用程序在 64 位设备上崩溃
32-bit App with dynamic library crash on 64-bit device
我面临以下情况:
- 32位设备+app armv7+动态库armv7 arm64=
工作
- 64位设备+app armv7+动态库armv7 arm64=
不起作用
不起作用 - 应用在加载时崩溃并出现以下错误:
dyld error message library not loaded reason no suitable image found
有什么解释吗?
解释:加载到 64 位设备上的 32 位二进制文件无法这样做,因为在 iOS 9 中 32 位页面大小已从 4096 字节更改为 16384 字节.
结论:带有动态库的 32 位应用不能在 64 位设备上运行。
解决方案(二选一即可):
在动态库项目中为Other linker flags添加一个新条目:
-Wl,-segalign,4000
- 更新应用本身以支持 arm64 架构
我面临以下情况:
- 32位设备+app armv7+动态库armv7 arm64= 工作
- 64位设备+app armv7+动态库armv7 arm64= 不起作用
不起作用 - 应用在加载时崩溃并出现以下错误:
dyld error message library not loaded reason no suitable image found
有什么解释吗?
解释:加载到 64 位设备上的 32 位二进制文件无法这样做,因为在 iOS 9 中 32 位页面大小已从 4096 字节更改为 16384 字节.
结论:带有动态库的 32 位应用不能在 64 位设备上运行。
解决方案(二选一即可):
在动态库项目中为Other linker flags添加一个新条目:
-Wl,-segalign,4000
- 更新应用本身以支持 arm64 架构