以下是我的情况:
我有一个C项目链接许多库(我没有编写这个应用程序),它也随MSVCR71.dll和MSVCP71.dll一起发货。即使没有这些DLL,该程序在我的系统上运行正常,它安装了MS VS2005(确实使用了MSVCR80.dll和MSVCP80.dll)。
我已将此应用程序与在我的系统上编译的其他库相关联。现在,在与这些库链接后,应用程序无法启动,因为它无法加载MSVCR80.dll和MSVCP80.dll ......我说非常奇怪。
Loader向我展示了错误R6034,应该使用清单文件解决构建应用程序的问题。
这个应用程序出了什么问题?
确认引入的库引入了问题。我可以在没有清单或静态的情况下编译这些库吗?
仍然好奇为什么没有链接新库的应用程序找不到MS运行时DLL ...
答案 0 :(得分:1)
MSVCP71.dll是Visual Studio 2002使用的dll.MSVCR80.dll适用于Visual Studio 2005。 因此,当您使用VS2005重新编译此应用程序时,您将获得新的dll依赖项。 您无法使用清单解决它 - 您应该在Visual Studio 2002中重新编译它,或者只是将这些新的dll放入应用程序所在的同一文件夹中。
编辑: 是的,您可以将您的应用程序与静态CRT库链接起来,以避免对这些dll的外部依赖性。但是,如果您链接的dll或库之一使用动态CRT,则可能无法实现 - 您应该使用静态CRT重新编译它们。