找不到MSVCR90.DLL

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

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

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

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

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

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

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

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

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

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

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

您可以:

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

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

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

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

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

我刚被这个咬了, 这个页面让我再次工作了。

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

  • MSVCRT
  • MSVCR90

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

如果将完成的exe提供给其他人,则需要安装最新的visual c运行时来运行它。 这仅适用于发布版本AFAIK。 Visual Studio应该将所需的运行时安装和调试安装到您的路径中。 对于不正确的运行时版本,项目可能会意外地设置一个额外的依赖项。

看看这个页面是否有帮助。

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