我知道已经有类似的问题被问过了,但情况有所不同,那个问题的所有答案对我都没有用。
我正在尝试在VS2008中编译一些C代码,但它并没有创建可执行文件。当我尝试按f5运行它时,会出现以下错误:
无法启动该应用程序,因为找不到 MSVCR90.DLL。
我查了一些资料,上面说这是因为我的C++可再发行包未安装。于是我安装了它,重启了一切,然后再试了一遍。但是,令人沮丧的是,我仍然遇到同样的错误。有人有任何解决办法吗?
我知道已经有类似的问题被问过了,但情况有所不同,那个问题的所有答案对我都没有用。
我正在尝试在VS2008中编译一些C代码,但它并没有创建可执行文件。当我尝试按f5运行它时,会出现以下错误:
无法启动该应用程序,因为找不到 MSVCR90.DLL。
我查了一些资料,上面说这是因为我的C++可再发行包未安装。于是我安装了它,重启了一切,然后再试了一遍。但是,令人沮丧的是,我仍然遇到同样的错误。有人有任何解决办法吗?
看起来可能是你的VS2008安装有问题,或者是DLL搜索路径出了问题。MSVCR90.DLL会在安装VS2008时自动安装,你不需要安装任何额外的可再发行包。
首先,我建议你检查你的PATH环境变量,确保其中没有任何错误的条目。如果没有问题,则建议你卸载并重新安装Visual Studio。
你还可以尝试搜索MSVCR90.DLL(以及类似的DLL文件),并将它们移动到Windows/System32文件夹中。
如果你只是想快速解决问题,你也可以将项目设置为静态链接运行时库,这样就不会尝试加载那个DLL文件了。进入你的项目设置,选择“配置属性->C/C++->代码生成”,将运行时库从多线程DLL改为仅多线程(或者任何不以DLL结尾的选项)。
以下是一些检查项目配置的要点——在常规选项卡下:
如果出现特定的链接器错误,显示某些内容已经定义:
这意味着您的应用程序(连接到exe的单独库)的某些部分使用了不同的运行时连接方式:
您可以:
确保这些库与您的应用程序使用相同的Visual Studio版本进行编译。
将那些项目更改为使用静态运行时:C/C++——>代码生成——>运行库:/ MT或MTd(与#4上面相同)
如果仍然存在某些特定错误,请告诉链接器忽略某些库:转到链接器->忽略特定库并放入要忽略的库。这最常见的是“libcmt.lib”或“libcmtd.lib”。还要知道,以“d”结尾的库通常是调试版本。如果您正在创建发布版本并且收到“在libcmtd.lib中已定义”,那意味着您在将发布版库链接到调试版库。
如果您删除与 .exe 相关联的清单文件,您将会遇到相同的错误。
MSVCR90.dll 并未安装在 system32 中,而是在 side-by-side 文件夹中,因此需要清单文件。
据说这个问题可以通过安装http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a5c84275-3b97-4ab7-a40d-3802b2af5fc2&displaylang=en Visual Studio 2008运行库来解决。是的!安装后,OpenOffice更新就可以正常工作了。
前往项目设置,配置属性->C/C++->代码生成,将运行库从多线程DLL更改为多线程,然后尝试编译,但不会成功。然后将其更改为多线程调试并尝试编译,但仍然无法成功,然后将其改回多线程DLL,然后应该可以编译和运行。