64位系统上的32位库
32-bit library on 64-bit system
如果我在64位系统上使用32位库,会不会造成任何问题?
什么是不兼容的?
我知道这个问题太含糊了。一个例子:
我尝试在Windows 7 64位上使用VS2010设置FreeGlut 32位库。一开始有很多问题。所以,我在寻找64位的FreeGLUT,认为32位的FreeGLUT可能与64位的Windows冲突。但后来我成功地在64位Windows上运行了32位FreeGlut,没有任何问题。
问题是,如果程序中有什么东西,我们在使用那些与系统不匹配的库时应该研究一下?(64位操作系统上的32位库)
64位Windows完全能够运行32位应用程序。事实上,Visual C++的默认配置是构建一个x86应用程序,而不管它在哪个操作系统上运行
在64位Windows上运行32位应用程序时,您必须注意一些问题。例如,有注册表重定向(为了避免它,您将KEY_WOW64_64KEY
传递给例如RegOpenKeyEx
)。还有文件系统重定向。例如,当您读取系统配置值时,这些都是需要记住的重要事项。
此外,请注意,您不能在同一过程中混合32位和64位。您的32位应用程序无法使用64位DLL或静态库。
也许,你想问的问题是关于将32位库链接到64位程序
答案是:
您不能直接链接到64位程序中的32位代码
唯一的选择是编译一个可以在64位平台上运行的32位(独立)程序(使用ia32),然后使用进程间通信从64位程序与之通信。
这与操作系统无关-Windows不在乎您的代码是32位还是64位。重要的是,您的进程与它要加载的所有库具有相同的比特性,并且它们必须都是相同的比特。
您可能对解释移植到64位时常见编译器错误的链接感兴趣。它可能会帮助你解决问题。
为了更直接地回答您的问题,有一些事情可能会使32位库在64位环境中崩溃,但在SO回答中共享的信息太多了。
此链接是与64位系统开发相关的MSDN索引,您可能也会感兴趣。
您的问题可能是如何开发在64位和32位硬件上本机运行的特定代码。这里有相关信息。特别是,您必须按照此处的说明来启用64位构建工具。
如果您正在构建64位二进制文件,则需要链接到64位库。请注意,32位二进制文件在64位Windows上应该可以正常运行,因此您可能不需要遇到此问题。
- 在node-gip binding.gyp文件中,如何根据系统结构(32位、64位)包含不同的库文件
- 如果在创建对象时创建了 VPTR,那么为什么具有虚拟功能的类的大小在 32 位系统上为 4,在 64 位机器上为 8
- 旧的 32 位 Linux 程序最终如何调用 64 位库
- 无法在CentOS7上构建32位库
- 为什么 32 位和 64 位系统上的"alignment"相同?
- 是在32位系统上为Android Studio安装CMAKE的任何方法,以允许C 支持
- 如何将Zeromq作为32位库,并将其与标准64位库合并
- 如何在跨平台 c++ 32 位系统中获取以毫秒为单位的时差
- 如何解决GMP的32位和64位库之间的冲突
- 32 位和 64 位系统之间的通信
- 正确处理字节对齐问题 - 通过UDP在16位嵌入式系统和32位桌面之间
- 在Fedora 20 x86_64上编译32位Linux应用程序时,请使用SNDFILE库
- 如何在 64 位 Linux Mint 上构建最小的静态 Qt 5.2 32 位库
- Visual Studio 在编译 32 位时尝试使用 64 位 C 运行时库
- Makefile,如何同时链接32位库和64位库
- 使用Clang编译时,Linker无法在64位Mint操作系统下找到32位库
- Xcode:使用 32 位库编译 64 位应用程序
- 链接64位应用程序与32位库在centos 5.6 64位
- 在64位c++程序中使用32位库
- 64位系统上的32位库