昨天我遇到了一个问题,我的程序在32位程序中失败。无法在OSX上从64位进程加载32位dylib,反之亦然?
我有一个dylib编译为64位,我在64位应用程序上使用它。但是当我将它转换为32位进行测试并尝试加载时,它没有奏效。 dlopen()返回NULL?
我是否需要分别为32位和64位二进制的32位和64位dylib?有什么解决办法吗?
昨天我遇到了一个问题,我的程序在32位程序中失败。无法在OSX上从64位进程加载32位dylib,反之亦然?
我有一个dylib编译为64位,我在64位应用程序上使用它。但是当我将它转换为32位进行测试并尝试加载时,它没有奏效。 dlopen()返回NULL?
我是否需要分别为32位和64位二进制的32位和64位dylib?有什么解决办法吗?
是的,你需要32位库为32位进程,64位库为64位进程。没有解决方法。
第2点是错误的。您通常无法在x86上运行32位操作系统上的64位代码(不包括虚拟化事物)。 – Mat
第2点对于OS X是正确的 - 它可以在32位内核下运行64位进程。事实上,从10.4版本开始,即使它在10.6之前没有包含64位内核(并且通常在10.7之前通常不使用64位内核),它仍然可以使用。 –
严格地说,有一种产生32位进程的“解决方法”,通过某种形式的IPC将调用调解到库中,但除非真正需要**,否则我不会这么做。 。 –
有一个更好的“解决方法”:将所有库构建为fat(多体系结构)二进制文件,以便它们可以在32位和64位进程中使用。 –