在64位计算机上使用Visual Studio编译32位应用程序

时间:2011-08-11 15:19:06

标签: c visual-studio visual-studio-2010 32bit-64bit

我正在尝试使用Visual Studio 2010在Windows 7全新安装的64位计算机上编译一个简单的32位Hello World应用程序。安装Visual Studio后,我还安装了“Windows SDK for Windows 7和.NET Framework 4”。 我构建了选择“Win32”作为平台的应用程序。它可以在Windows 7上运行,但是如果我在带有Windows XP Professional的32位计算机上运行应用程序(还安装了这个,没有软件和Service Pack),它似乎无法解决此错误:

"This application has failed to start because msvcr100.dll was not found"

如果它有用,Dependency Walker会检测到2个错误(详见链接图片):

"Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module."
"Error: Modules with different CPU types were found."

http://img820.imageshack.us/img820/4725/errordp.png(图片)

我该如何解决?谢谢!

4 个答案:

答案 0 :(得分:3)

运行它的机器需要运行时库。请参阅此MSDN information

答案 1 :(得分:2)

此处的问题是Windows XP计算机上缺少已编译程序使用的C运行时。默认情况下,Visual Studio 2010将默认使用10.0(msvcr100.dll)运行时,该运行时在XP上不可用。您需要在计算机上手动部署C运行时才能运行程序。

您可能需要阅读以下MSDN文章,该文章讨论了部署使用Visual Studio 2010构建的C应用程序的问题

可能还有其他32/64问题,但这似乎是主要问题

答案 2 :(得分:2)

不要相信Dependency Walker ......这清楚地表明你的exe是32位。您的问题在于VC可再发行组件,即CRT dll - 在VS安装中查找vcredist_x86.exe。您应该在运行应用程序之前运行它。

另一种选择是静态链接CRT。请参阅/MT option。会使你的exe更大,但保存vcredist的东西。

答案 3 :(得分:1)

关于运行时库的答案是正确的。另一种可能的解决方案是链接到静态运行时库而不是DLL版本。通过这种方式,您可以构建一个可以放在任何计算机上的可执行文件,而无需额外的部署麻烦。

这是一种权衡,但是,如果不了解您的情况,可能值得考虑。