VS2008 C++应用程序无法在调试模式下启动:此应用程序无法启动,因为找不到MSVCR90.dll

Ale*_*ack 2 c++ 64-bit visual-studio-2008

我在Vista x64上使用VS 2008 SP1创建了一个最小的应用程序.它是一个控制台应用程序,使用向导创建,没有MFC或任何东西,我正在64位构建它.

当我运行调试exe时,在我的开发框中,通过在Visual Studio 2008中按F5,我收到此错误:

TestApp.exe - Unable To Locate Component

This application has failed to start because MSVCR90.dll was not found. 
Re-installing the application may fix this problem. 

OK   
Run Code Online (Sandbox Code Playgroud)

当我运行release exe时,我没有收到此错误,它按预期工作.

当我在iostream和fstream上添加一些include依赖项并开始调用一些winsock API调用时,就开始出现此问题.

有什么建议?

更新:我将msvcr90.dll(而不是msvcrd90.dll)复制到正确的文件夹中,现在我得到一个不同的错误:


Microsoft Visual C++运行时库

运行时错误!

节目:[snip] ...

R6034

应用程序尝试错误地加载C运行时库.有关更多信息,请联系应用程序的支持团队.


  • 亚历克斯

Sha*_*ell 5

您的应用程序正在使用DLL CRT运行时.要运行它的机器需要安装调试CRT运行时dll(这是一个痛苦的屁股...).我认为更好的解决方案是更改编译选项以使用静态链接的CRT运行时(这意味着运行时链接到您的应用程序而不是使用DLL版本).

在visual studio中,进入项目的Properites,然后选择Configuration Properties/C++/Code Generation,并将"Runtime Library"从"multi-threaded debug dll"更改为"multi-threaded debug".

您可能也希望对发布版本执行相同的操作,因为某些版本的操作系统不会预安装V9版本的CRT库,或者您可以在安装过程中包含v9版本的crt dll.