繁体   English   中英

64位系统上的32位库

[英]32 bit library on 64 bit system

如果我在64位系统上使用32位库,它会导致任何问题吗?

可能是什么不相容?

我知道这个问题太模糊了。 一个例子 :

我尝试在Windows 7 64bit上使用VS2010设置FreeGlut 32位库。 一开始有很多问题。所以,我一直在寻找64位FreeGLUT,认为32位FreeGlut可能与64位窗口冲突。 但后来我设法用我的64位Windows运行我的32位FreeGlut,没有任何问题。

问题是,如果程序中有任何东西,我们应该在使用那些与系统不匹配的库时进行调查。 (64位操作系统上的32位库)

64位Windows完全能够运行32位应用程序。 事实上,Visual C ++的默认配置是构建一个x86应用程序,而不管它运行的是什么操作系统。

一些陷阱 ,你必须要知道上运行64位Windows 32位应用程序时的感觉。 例如,有注册表重定向 (为了避免它将KEY_WOW64_64KEY传递给例如RegOpenKeyEx )。 还有文件系统重定向。 例如,在读取系统配置值时,这些是要记住的重要事项。

另外,请注意,您不能在同一进程中混合使用32位和64位。 您的32位应用程序不能使用64位DLL或静态库。

这与操作系统无关 - Windows不关心您的代码是32位还是64位。 重要的是你的过程与它关心加载的所有库的位数相同 - 它们必须都是相同的位。

您可能对此链接感兴趣,解释了在移植到64位时常见的编译器错误。 它可以帮助您解决问题。

为了更直接地回答你的问题,有些东西可能会使64位库在64位环境中中断,但是在SO答案中分享的信息太多了。

此链接是与64位系统开发相关的MSDN索引,您可能也会对此感兴趣。

Visual Studio可以根据项目设置编译32位或64位。

可能,你要问的问题是关于将32位库链接到64位程序

答案是:
您不能直接链接到64位程序内的32位代码。
唯一的选择是编译一个可以在64位平台上运行的32位(独立)程序(使用ia32),然后使用进程间通信从64位程序与它进行通信。

您的问题可能是如何开发专门针对64位与32位硬件本机运行的代码。 有对信息在这里 特别是,您必须按照此处的说明启用64位构建工具。

如果要构建64位二进制文​​件,则需要链接64位库。 请注意,32位二进制文​​件应该在64位Windows上运行正常,因此您可能不需要遇到此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM