在64位系统中,如何使用一个旧的32位静态库*.a?因为没有源代码重新编译这个旧库的机会。同时,我也不想在gcc中使用-m32选项,因为程序使用了许多64位库。
在64位系统中,如何使用一个旧的32位静态库*.a?因为没有源代码重新编译这个旧库的机会。同时,我也不想在gcc中使用-m32选项,因为程序使用了许多64位库。
在x86平台上,您无法将32位库链接到64位可执行文件中。如果您确实需要使用该库,则需要启动单独的32位进程来处理您对该库的调用,并使用某种IPC在您的64位应用程序和该帮助程序之间传递这些调用。请注意:这是很麻烦的。在开始这条路之前,请确保您真正需要该库。
为了加载一个32位的库,你需要使用-m32
。
可能最好的办法是创建一个包装库的服务器。然后,64位应用程序可以使用IPC(各种方法,例如套接字、命名管道)与托管库的进程进行通信。
在Windows上,这将被称为out-of-process COM。我不知道Unix上是否有类似的框架,但同样的方法也适用。