32 位和 64 位代码可以混合使用吗?
可能的重复:
将 32 位库链接到 64 位程序
其中之一程序使用的库(需要静态链接)是 32 位库。如果使用 64 位编译器编译,它会崩溃,主要是因为变量类型的长度不同(大多数情况下,long 是两倍长)。提供了该库的源代码。 该程序本身可以在 32 位和 64 位上运行。 是否可以将库编译为 32 位并将其静态链接到 64 位应用程序?
Possible Duplicate:
Linking 32-bit library to 64-bit program
One of the libraries a program uses, which needs to be statically linked, is a 32-bit one. If compiled with a 64-bit compiler, it breaks, mostly because the variable types are of different length (long being twice as long, mostly). Source code of the library is provided.
The program itself works at 32 and 64 bit.
Is it possible to compile the library as 32-bit and statically link it to a 64-bit application?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
基本上,不,你不能静态或动态地链接 32 位和 64 位代码,无论如何在 x86 上都不能。
您可以做的是编写一个在单独进程中运行的包装器,并使用 RPC 将库“链接”到您的代码。 Linux 上的 nspluginwrapper 为 Flash 做了类似的事情。
Basically, no, you can't link, statically or dynamically, 32bit and 64bit code, not on x86 anyway.
What you can do is write a wrapper that runs in a separate process and uses RPC to "link" the library to your code.
nspluginwrapper
on Linux does something like that for Flash.不,这是不可能的。您无法从 64 位代码调用任何 32 位库。您必须将它们放在不同的地址空间中。
使用它的一种方法是使用进程间通信(管道、套接字等)。
No its not possible. You cant call any 32 bit lib from 64 bit code. You have to put them in different address space.
One way to utilize it is to use interprocess communication (pipe, socket etc).