这是我的情况:
我有一个与许多库链接的 C 项目(我还没有编写此应用程序),它还与 MSVCR71.dll 和 MSVCP71.dll 一起提供。即使没有这些 DLL,该程序在我安装了 MS VS2005 的系统上运行良好(确实使用了 MSVCR80.dll 和 MSVCP80.dll)。
我已将此应用程序与在我的系统上编译的其他库链接起来。现在,在与这些库链接后,应用程序无法启动,因为它无法加载 MSVCR80.dll 和 MSVCP80.dll...我说这很奇怪。
加载程序向我显示错误 R6034,应该使用 list 文件构建应用程序来解决这个问题。
这个应用程序有什么问题?
确认问题是由引入的库引起的。我可以在没有 list 或静态的情况下编译这些库吗?
仍然好奇为什么没有链接新库的应用程序找不到 MS 运行时 DLL...
最佳答案
MSVCP71.dll 是 Visual Studio 2002 使用的 dll。MSVCR80.dll 适用于 Visual Studio 2005。 因此,当您使用 VS2005 重新编译此应用程序时,您会获得新的 dll 依赖项。 您无法使用 list 解决它 - 您应该在 Visual Studio 2002 中重新编译它,或者将这些新的 dll 放入应用程序所在的同一文件夹中。
编辑: 是的,您可以将您的应用程序与静态 CRT 库链接起来,以避免对这些 dll 的外部依赖。但是,如果您链接的其中一个 dll 或库使用动态 CRT,则可能无法实现 - 您也应该使用静态 CRT 重新编译它们。
关于c - 如何解决此 MS 运行时 DLL 加载程序运行时错误 (R6034),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2350901/