我知道这样的问题已经被问到了,但情况有点不同,所有关于这个问题的答案对我都不起作用。
我正在尝试在VS2008中编译一些C代码并且它不会创建一个exe。此外,当我尝试用f5运行它时,我得到:
此应用程序无法启动 因为找不到MSVCR90.DLL。
我做了一些谷歌搜索,它说这是因为我的c ++可再发行组件没有安装。所以我安装了它,重新启动了一切并再次尝试。但是,唉,我仍然得到同样的错误。有没有人知道如何解决这个问题?
答案 0 :(得分:11)
这听起来像是你的VS2008安装问题,或者你的DLL搜索路径有问题。安装VS2008时安装了MSVCR90.DLL,您不必安装任何其他可再发行软件包。
首先,我会检查您的PATH环境变量,并确保其中没有gobbledydook会破坏某些条目,如果您没有在那里找到问题,那么我将卸载并重新安装Visual Studio。
您也可以尝试搜索MSVCR90.DLL(和其他类似的DLL),并将它们移动到Windows / System32文件夹。
如果你现在只想开始,你可以做的另一件事是将项目更改为静态链接到运行时库,然后它甚至不会尝试加载该DLL。转到项目设置,配置属性 - > C / C ++ - >代码生成并将运行时库从多线程DLL更改为多线程(或任何不以DLL结尾的选项)。
答案 1 :(得分:6)
以下是一些要检查项目配置的内容 - 在常规选项卡下:
如果您收到特定的链接器错误,说明已经定义了某些内容: 这意味着您的应用程序的某些部分(单独的库链接到您的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库以进行调试配置。设置链接器 - >输入 - >忽略特定库设置以包括以下内容:
答案 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,然后它应该编译并运行。