我正在尝试使用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(图片)
我该如何解决?谢谢!
答案 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版本。通过这种方式,您可以构建一个可以放在任何计算机上的可执行文件,而无需额外的部署麻烦。
这是一种权衡,但是,如果不了解您的情况,可能值得考虑。