如果我在64位系统上使用32位库会导致任何问题吗?
可能是什么不相容?
我知道这个问题太模糊了。一个例子:
我尝试在Windows 7 64bit上使用VS2010设置FreeGlut 32位库。一开始有很多问题。所以,我一直在寻找64位FreeGLUT,认为32位FreeGlut可能与64位窗口冲突。但后来我设法用我的64位窗口运行我的32位FreeGlut没有任何问题。
问题是,如果程序中有任何东西,我们应该在使用那些与系统不匹配的库时进行调查。 (64位操作系统上的32位库)
答案 0 :(得分:4)
64位Windows完全能够运行32位应用程序。事实上,Visual C ++的默认配置是构建一个x86应用程序,而不管它运行的是什么操作系统。
在64位Windows上运行32位应用时,您必须注意 某些gotchas。例如,有registry redirection(为了避免它将KEY_WOW64_64KEY
传递给例如RegOpenKeyEx
)。还有文件系统重定向。例如,在读取系统配置值时,这些是重要的事情。
另外,请注意,在同一进程中不能混用32位和64位。您的32位应用程序不能使用64位DLL或静态库。
答案 1 :(得分:2)
这与操作系统无关 - Windows不关心您的代码是32位还是64位。重要的是你的进程与它关心加载的所有库的位数相同 - 它们必须具有相同的位数。
答案 2 :(得分:1)
您可能对this link解释在移植到64位时常见的编译器错误感兴趣。它可以帮助您解决问题。
为了尝试更直接地回答您的问题,有些事情可能会使64位库在64位环境中中断,但是在SO答案中分享的信息太多了。
This link是与64位系统开发相关的MSDN索引,您可能也会对此感兴趣。
答案 3 :(得分:1)
Visual Studio可以根据项目设置编译32位或64位。
你可能会问的问题是关于将32位库链接到64位程序
答案是:
您无法直接链接到64位程序内的32位代码
唯一的选择是编译一个可以在64位平台上运行的32位(独立)程序(使用ia32),然后使用进程间通信从64位程序与它进行通信。
答案 4 :(得分:0)