Visual studio C++/CLI缺少MSVCR90.DLL

Visual studio C++/CLI缺少MSVCR90.DLL,visual-studio,visual-studio-2010,winapi,dependencies,Visual Studio,Visual Studio 2010,Winapi,Dependencies,我有一个在运行时加载的c++/cli dll,它在调试模式下工作得非常好。如果我尝试以发布模式加载dll,它将无法加载,表明缺少一个或多个依赖项。如果我运行依赖于它,我将从MSVCM90.DLL中丢失MSVCR90.DLL。如果我检查dll的调试版本,它也有缺少的依赖项,但与调试(D)版本相对 我已确保调试/发布嵌入清单文件。我读到一些关于应用程序加载dll时出现问题的信息,dll作为任何CPU构建,dll作为x86构建,但我不知道如何将它们都设置为x86 我正在使用VS2010 不管怎样,我已

我有一个在运行时加载的c++/cli dll,它在调试模式下工作得非常好。如果我尝试以发布模式加载dll,它将无法加载,表明缺少一个或多个依赖项。如果我运行依赖于它,我将从MSVCM90.DLL中丢失MSVCR90.DLL。如果我检查dll的调试版本,它也有缺少的依赖项,但与调试(D)版本相对

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

我正在使用VS2010

不管怎样,我已经胡闹了一段时间,不知道出了什么问题。我肯定有人知道发生了什么。如果我需要包括其他信息,请告诉我

更新:


这最终解决了我的问题:

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

无论哪种方式,您都可以通过安装来修复-但请确保您的PC(x86或x64)下载正确

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


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

从Visual Studio 2010迁移后,我在Visual Studio 2012中运行网站时遇到了类似的情况。错误消息表示缺少MSVCR90.DLL。解决办法是: 1) 删除位于项目路径的文件夹_bindeployable。 2) 重建


我希望它能有所帮助。

这是我的开发工具,我的目标是.net 3.5和VS2010,最终使用VS2008来构建。我不确定这是不是有点奇怪。所以它使用90个版本的DLL是正确的。这是对我问题的回答,但没有解决我的问题。我仍然不知道我的开发环境出了什么问题,但我无法在发布模式下加载这些DLL。它们在其他安装了vc++运行时CRT的机器上运行良好。@Mitch。很遗憾听到这个消息。我所能建议的就是尝试(重新)在你的电脑上安装redist软件包(DLL包含在Visual Studio安装中,但它实际上并没有安装redist软件包,所以它与你在用户电脑上得到的软件包略有不同)——如果这不起作用,我唯一能想到的就是重新安装Visual Studio。您的构建听起来并没有问题,因为您说它在其他PC上运行良好,所以您的PC肯定有所不同。可能您的项目属性设置不正确,只需设置如下:C++/代码生成/运行时库//MdD