【问题标题】:C++/CLI Missing MSVCR90.DLLC++/CLI 缺少 MSVCR90.DLL
【发布时间】:2011-02-28 22:19:24
【问题描述】:

我有一个在运行时加载的 c++/cli dll,它在调试模式下运行良好。如果我尝试在发布模式下加载 dll,则加载失败,说明缺少一个或多个依赖项。如果我运行取决于它,我会从 MSVCM90.DLL 中丢失 MSVCR90.DLL。如果我检查 dll 的调试版本,它也缺少依赖项,但针对的是调试 (D) 版本。

我已确保调试/发布嵌入清单文件。我读到一些关于应用程序加载正在构建为任何 CPU 的 dll 和正在构建为 x86 的 dll 的应用程序存在问题,但我不知道如何将它们都设置为 x86。

我正在使用 VS2010。

不管怎样,我已经搞砸了一段时间了,不知道出了什么问题。我敢肯定外面有人知道发生了什么。如果我需要添加其他信息,请告诉我。

alt text http://www.freeimagehosting.net/uploads/fb31c0e256.png

更新:

这最终解决了我的问题:http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/07794679-159b-4363-ae94-a68fe258d827

【问题讨论】:

  • 可能你的项目属性设置不对,设置如下:C++/Code Generation/Runtime library//MdD

标签: visual-studio visual-studio-2010 winapi dependencies


【解决方案1】:

MSVCR90 是 Visual Studio 2008 的运行时。如果您在开发 PC 上运行应用程序,那么您应该安装调试和发布运行时(作为 Visual Studio 的一部分),但您的安装可能出现问题,或者 VS2010 实际上不包含旧版本运行时。如果您尝试在不同的 PC 上运行 Release,那么它只需要安装运行时。

无论哪种方式,您都可以通过安装 Visual Studio 2008 redistributable 来修复它 - 但请确保为您的 PC(x86 或 x64)下载正确的文件。

在以前版本的 VS 中,您需要编译时使用的版本的运行时,因此如果 VS2010 遵循此先例,您将需要 MSVCR100,而不是 MSVCR90 - 这表明您可能没有使用 VS2010 重新编译 dll - 做所以可能是让它在您的 PC 上运行的另一种方法(使用 VS2010 安装中的 redist),但请注意,您仍然需要其他用户在他们的 PC 上安装适当的 (VS2010) 可再发行组件。

至于“Any CPU”与“x86”,这只是 64 位计算机上的问题。在这些系统上,64 位应用程序无法动态链接到 32 位 dll。如果您将应用程序编译为“任何 CPU”,它将在 64 位操作系统上被 JIT 编译为 64 位,因此如果它尝试直接调用任何 32 位 dll,则会崩溃。解决方案是构建面向“x86”的应用程序,因为这会强制 JIT 编译器生成 32 位代码(即使在 64 位机器上),从而确保与您希望调用的 dll 的兼容性。如果 DLL 是托管程序集,那么您可以在应用程序和 dll 上使用 Any CPU,因为它们都将被 JITted 为相同的格式。

【讨论】:

  • 这是在我的开发盒上,我的目标是 .net 3.5 和 VS2010,最终使用 VS2008 构建。我不确定那里是否发生了一些奇怪的事情。所以它使用的是 90 个版本的 dll 是正确的。
  • 这是对我问题的回答,但没有解决我的问题。我仍然不知道我的开发环境出了什么问题,但我无法在发布模式下加载这些 dll。它们在安装了 vc++ 运行时 CRT 的其他机器上也能正常工作。
  • @Mitch。很抱歉听到这个消息。我所能建议的就是尝试(重新)在您的 PC 上安装 redist 包(dll 包含在 Visual Studio 安装中,但它实际上并没有安装 redist 包,因此它与您在用户的 PC) - 如果这不起作用,我唯一能想到的就是重新安装 Visual Studio。这听起来不像您的构建有问题,因为您说它在其他 PC 上运行良好 - 所以这绝对是您的 PC 的一些不同之处。
【解决方案2】:

从 Visual Studio 2010 迁移后,我在 Vistual Studio 2012 中运行网站时发生了类似的事情。错误消息说 MSVCR90.DLL 丢失。解决方案是: 1) 删除位于项目路径的文件夹 _bindeployable。 2) 重建。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 2020-11-11
    • 1970-01-01
    相关资源
    最近更新 更多