找不到MSVCR90.DLL

时间:2008-11-16 03:03:05

标签: c visual-studio visual-studio-2008

我知道这样的问题已经被问到了,但情况有点不同,所有关于这个问题的答案对我都不起作用。

我正在尝试在VS2008中编译一些C代码并且它不会创建一个exe。此外,当我尝试用f5运行它时,我得到:

  

此应用程序无法启动   因为找不到MSVCR90.DLL。

我做了一些谷歌搜索,它说这是因为我的c ++可再发行组件没有安装。所以我安装了它,重新启动了一切并再次尝试。但是,唉,我仍然得到同样的错误。有没有人知道如何解决这个问题?

7 个答案:

答案 0 :(得分:11)

这听起来像是你的VS2008安装问题,或者你的DLL搜索路径有问题。安装VS2008时安装了MSVCR90.DLL,您不必安装任何其他可再发行软件包。

首先,我会检查您的PATH环境变量,并确保其中没有gobbledydook会破坏某些条目,如果您没有在那里找到问题,那么我将卸载并重新安装Visual Studio。

您也可以尝试搜索MSVCR90.DLL(和其他类似的DLL),并将它们移动到Windows / System32文件夹。

如果你现在只想开始,你可以做的另一件事是将项目更改为静态链接到运行时库,然后它甚至不会尝试加载该DLL。转到项目设置,配置属性 - > C / C ++ - >代码生成并将运行时库从多线程DLL更改为多线程(或任何不以DLL结尾的选项)。

答案 1 :(得分:6)

以下是一些要检查项目配置的内容 - 在常规选项卡下:

  • .1配置类型 - 在您的情况下为exe。
  • .2 MFC的使用:如果这是一个MFC应用程序,它可能更具可移植性:在静态库中使用MFC。
  • .3使用ATL - 如果不使用atl(或不确定)说不使用ATL。
  • .4在C / C ++下 - >运行时库:说多线程调试(用于调试版本)或多线程(用于发行版本)。

如果您收到特定的链接器错误,说明已经定义了某些内容: 这意味着您的应用程序的某些部分(单独的库链接到您的exe)使用不同的运行时链接构建:

你可以:

  • 确保使用与您的应用程序相同版本的Visual Studio编译这些库。

  • 将这些项目更改为使用静态运行时:C / C ++ - >代码生成 - >运行时库:/ MT或MTd(与上面#4相同)

  • 如果您仍有一些特定错误,请尝试告诉链接器忽略某些库:转到链接器 - >忽略特定库并放入要忽略的库。这在'libcmt.lib'或'libcmtd.lib'中最常见。同样重要的是要知道以'd'结尾的lib通常是调试版本。如果您正在创建发布版本并且您已经“已经在libcmtd.lib中定义”,则表示您正在将版本库链接到调试库。

答案 2 :(得分:4)

如果删除与.exe关联的清单文件,则会收到相同的错误。

MSVCR90.dll未安装在system32中,但在并排文件夹中,因此需要清单。

答案 3 :(得分:3)

我刚被这个咬了,this page让我再次工作。

关键是忽略MSVCRT和MSVCR90库以进行调试配置。设置链接器 - >输入 - >忽略特定库设置以包括以下内容:

  • MSVCRT
  • MSVCR90

答案 4 :(得分:1)

它应该在http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a5c84275-3b97-4ab7-a40d-3802b2af5fc2&displaylang=en visual studio 2008运行时库中。是!安装后,openoffice更新工作。

答案 5 :(得分:0)

如果将完成的exe提供给其他人,他们将需要安装最新的visual c运行时来运行它。这仅适用于发布版本AFAIK。 Visual Studio应该将所需的运行时安装和调试安装到您的路径中。该项目可能会因错误的运行时版本而意外设置附加依赖项。

查看this page是否有帮助。

答案 6 :(得分:0)

转到项目设置,配置属性 - > C / C ++ - >代码生成并将运行时库从多线程DLL更改为多线程,然后尝试编译,但不会。然后将其更改为Multi-Threaded Debug并尝试编译,但它不会再次,然后将其更改回多线程DLL,然后它应该编译并运行。