【发布时间】:2012-02-10 08:27:54
【问题描述】:
程序使用的需要静态链接的库之一是 32 位库。如果用 64 位编译器编译,它会中断,主要是因为变量类型的长度不同(long 通常是两倍长)。提供了库的源代码。 该程序本身适用于 32 位和 64 位。 是否可以将库编译为 32 位并静态链接到 64 位应用程序?
【问题讨论】:
标签: c 32bit-64bit
程序使用的需要静态链接的库之一是 32 位库。如果用 64 位编译器编译,它会中断,主要是因为变量类型的长度不同(long 通常是两倍长)。提供了库的源代码。 该程序本身适用于 32 位和 64 位。 是否可以将库编译为 32 位并静态链接到 64 位应用程序?
【问题讨论】:
标签: c 32bit-64bit
不,这是不可能的。您不能从 64 位代码调用任何 32 位库。您必须将它们放在不同的地址空间中。
使用它的一种方法是使用进程间通信(管道、套接字等)。
【讨论】:
基本上,不,您不能静态或动态链接 32 位和 64 位代码,无论如何都不能在 x86 上。
您可以做的是编写一个在单独进程中运行的包装器,并使用 RPC 将库“链接”到您的代码。 Linux 上的nspluginwrapper 为 Flash 做了类似的事情。
【讨论】: