针对 x86 和 x64 进行编译
是否可以以这种方式设置编译器,以便为 x86 和 x64 编译可执行文件/DLL?我的意思是,一个文件适用于两个平台。
我只知道一种单独选择平台的方法,但我两者都想要。
是否可以?
Is it possible to set up the compiler in such a way so it compiles the executable/DLL for both x86 and x64? I mean, one file suitable for both platforms.
I only know of a way to choose the platforms separately, but I want both.
Is it possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
x64 主机完全支持 x86 可执行文件。例如,您在 32 位模式下编译的任何 EXE 将在 32 位和 64 位主机上运行,不会出现任何问题。如果您不知道为什么需要 64 位可执行文件,那么您可能不需要,因此仅 32 位可执行文件就足够了。
然而,对于 DLL,情况就不同了。 DLL 的体系结构(32 位或 64 位)必须与要使用 DLL 的可执行文件相匹配。例如,如果您正在为 x64 Windows 编写资源管理器扩展,则 explorer.exe 将是 64 位,因此您的 DLL 也必须是 64 位,否则无法加载。
在 Windows 上,无法将两种不同的体系结构组合到一个 DLL 或 EXE 中。因此,如果您需要同时支持 32 位和 64 位主机,则需要两个 DLL。
x86 executable is fully supported on x64 host. E.g. any EXE you compile in 32-bit mode will run without any problems on 32-bit and 64-bit host. If you don't know why you need 64-bit executable, you probably don't, so 32-bit executable alone will suffice.
However, with DLLs it is a different matter. The DLL's architecture (32-bit or 64-bit) must match the executable where the DLL is going to be used. E.g. if you're writing an Explorer extension for x64 Windows, explorer.exe is going to be 64-bit, so your DLL must also be 64-bit, otherwise it cannot be loaded.
There is no way to combine two different architectures into one DLL or EXE on Windows. So you're going to need two DLLs if you need to support both 32-bit and 64-bit hosts.