我有一个通过 JNI 加载本机代码的 Java 小程序。一切都很好,直到我升级到雪豹,然后 Safari 决定变得愚蠢。事实证明,Safari 在 64 位模式下只会加载 64 位二进制文件。(您可以将其置于 32 位模式,但这不是一个选项。)我更改了构建系统 (g++) 以支持构建通用二进制文件而不是单个 32 位二进制文件。我已经成功地创建了一个通用二进制文件,但是当我尝试将它加载到我的小程序中时,我得到一个不满意的链接异常,说没有找到合适的图像并且它无法映射它。以前有没有人处理过这个问题?
有关更多信息...当我在终端中输入“文件 native.dylib”时,原来的 32 二进制文件显示为:
Mach-O 动态链接共享库 i386
当我对通用二进制文件执行相同操作时,结果如下:
native.dylib:具有 2 个架构的 Mach-O 通用二进制
native.dylib(用于架构 i386):Mach-O 对象 i386
native.dylib(用于架构x86_64
): Mach-O 64 位对象x86_64