Windows 构建正确链接的可执行文件以避免错误0xc000007b

Windows 构建正确链接的可执行文件以避免错误0xc000007b,windows,visual-studio-2012,32bit-64bit,Windows,Visual Studio 2012,32bit 64bit,我正在使用VS 2012的默认构建设置构建一个32位可执行文件。它在一台64位计算机(开发机器)上正常工作;在另一台64位计算机上,程序崩溃,错误为0xc000007b 经过一点研究并使用依赖项遍历器表明问题在于可执行文件正在加载64位DLL而不是32位DLL 我有理由相信,通过将构建配置为静态链接所需的代码,而不是调用DLL,这是可以解决的 1) 。此解决方案是否合理正确且可移植 2) 。如何将VS 2012配置为如上所述的静态链接 N.B:这是一个C++原生程序。< P>而这不是对“合理正

我正在使用VS 2012的默认构建设置构建一个32位可执行文件。它在一台64位计算机(开发机器)上正常工作;在另一台64位计算机上,程序崩溃,错误为0xc000007b

经过一点研究并使用依赖项遍历器表明问题在于可执行文件正在加载64位DLL而不是32位DLL

我有理由相信,通过将构建配置为静态链接所需的代码,而不是调用DLL,这是可以解决的

1) 。此解决方案是否合理正确且可移植

2) 。如何将VS 2012配置为如上所述的静态链接


N.B:这是一个C++原生程序。

< P>而这不是对“合理正确的和可移植的”问题的答案,上面是1,我从中找到了2的答案。如果将compiler/MD选项更改为/MT,它将从DLL中的链接切换为静态链接,问题将消失[1]


[1] 。问题消失并不意味着问题已经解决。

64位DLL不会从天而降。您需要明确说明它来自何处,以及为什么该机器没有32位版本的DLL。如果所有内容(当然,操作系统本身除外)都是静态链接的,那么这确实是一个正确的可移植解决方案。但是,如果您需要链接到第三方DLL,而第三方DLL本身依赖于动态链接运行库,那么这种方法将不起作用。在这种情况下,您需要在目标计算机上安装正确版本的运行库。@HarryJohnston:在我的特定情况下,这实际上不是问题。但很高兴知道下一个人有这个问题!