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

时间:2009-06-05 16:22:07

标签: c++ visual-studio-2008 64-bit

我在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   

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

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

有什么建议吗?

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


Microsoft Visual C ++运行时库

运行时错误!

计划:[snip] ...

R6034

应用程序尝试错误地加载C运行时库。 请联系应用程序的支持团队以获取更多信息。


确定

  • 亚历

7 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

Debug exe链接到调试运行时库MSVCR90D.dll的标头。您需要确保dll在路径中。正如Shane所说,静态链接是一个可行的选择,但典型的解决方案是使用exe部署依赖的dll。静态链接所有内容会导致膨胀的exes和许多重复的运行时库副本。

看到您的编辑,问题肯定是msvcr90d.dll,但需要在WinSXS文件夹中正确部署。您可以重新安装VS 2008的Service Pack并将其重新部署。

答案 2 :(得分:0)

如何运行发布exe(IDE中的Ctrl + F5)?您应该将运行时库设置为与设置release exe相同的内容。

答案 3 :(得分:0)

您是否将调试模式程序链接到发布模式库?你在评论中提到了这个错误:

Error 13 error LNK2005: memmove already defined in LIBCMTD.lib(memcpy.obj) MSVCRT.lib DataEngineSocketsAPI

对我来说,你有一个名为DataEngineSocketsAPI的库,它链接到MSVCRT.lib,它定义了memmove()。但是,您的exe链接到libcmtd.lib,它还定义了memmove()的不同(调试模式)版本。

第三方(例如您自己的)库也必须具有调试版和发行版,并且您必须使用适合您构建exe的模式的版本。

答案 4 :(得分:0)

再次感谢您对此的所有帮助。事实证明,我只是犯了一个错误,并没有注意到我使用的库是静态链接到不同版本的MSVC运行时。这导致了问题的结束。

答案 5 :(得分:0)

请参阅此链接

http://www.insidercoding.com/post/2008/07/21/Debugging-issues-with-MSVCR90DLL.aspx

您需要(仅限调试模式)忽略链接输入选项卡MSVCRT; MSVCR90;因为你想使用CRT的调试版本。

答案 6 :(得分:0)

我可以确认这个问题:让Visual Studio 2008 创建项目(Visual C ++ / Win32控制台应用程序) 并按F5将显示该错误。

有一个简单的解决方案:

关闭增量链接。 HOWTO:打开属性页面 对于该项目。设置配置 属性/链接器/常规/启用增量链接到“否” (增量:否)。”