20

我正在开发一个执行另一个应用程序的应用程序,我收到了这个错误:

程序无法启动,因为您的计算机中缺少 MSVCR100.dll

使用我的 C# 应用程序,我可以将这个 .dll 复制到 windows/system32 文件夹中来解决这个问题吗?还是存在另一种方法来做到这一点?

4

4 回答 4

32

下面的此链接指向 MSVCRT100 安装程序的正确下载。这可能是您希望客户在安装应用程序之前运行的内容。这将在正确的目录中正确安装 MSVCRT DLL,以便所有应用程序都可以使用它。

Microsoft Visual C++ 2010 Redistributable Package (x86) (可能是 32 位和 64 位操作系统所需的)

Microsoft Visual C++ 2010 Redistributable Package (x64) (仅当您的应用程序本身是 64 位时)

如果您确实想通过您自己的 MSI 中的合并模块安装 MSVCRT100 DLL - 您可以将您的 MSI 链接到位于 x86 版本中的 MSM 的“c:\program files\common files\merge modules”目录”(假设您已安装 Visual Studio 2010)。

C:\Program Files (x86)\Common Files\Merge Modules>dir *CRT*.msm
 Volume in drive C has no label.
 Volume Serial Number is 60A4-1718

 Directory of C:\Program Files (x86)\Common Files\Merge Modules

04/22/2011  01:18 PM           584,192 Microsoft_VC100_CRT_x64.msm
04/22/2011  01:41 PM           571,904 Microsoft_VC100_CRT_x86.msm  <-- This is likely the MSM you want if your app is 32-bit.
04/22/2011  01:14 PM           847,360 Microsoft_VC100_DebugCRT_x64.msm
04/22/2011  01:39 PM           801,792 Microsoft_VC100_DebugCRT_x86.msm

另外两种选择:不要将 MSVCRT100.dll 复制到系统目录中,而是将其复制到您尝试启动的依赖此 DLL 的 EXE 应用程序的目录中。不建议这样做,但不会冒破坏其他应用程序的风险。

另一种选择。如果您确实拥有您尝试启动的 EXE 的源代码,您可以通过静态链接完全绕过所有这些“安装 msvcrt100.dll”噪音。在 Visual Studio 中,它是 C/C++ 下项目属性对话框中的选项(在代码生成选项卡下)。将“运行时库”从“多线程 Dll”更改为“多线程”。这将添加 /MT 编译器开关。

于 2011-08-05T23:36:37.743 回答
5

无论您尝试启动什么程序,都必须首先正确安装。Msvcr100.dll 是使用 VS2010 用 C 或 C++ 编写的程序需要部署的 DLL 之一。使用安装和部署项目或使用 /MT 选项构建程序很简单。联系程序所有者以获得支持。

于 2011-08-05T13:09:16.313 回答
2

缺少的是 Visual C++ 运行时。

您是从 C# 代码启动 C++ 应用程序吗?如果是这样,请确保客户端计算机上有正确的运行时可用。

于 2011-08-05T13:07:41.523 回答
1

您应该能够通过复制并注册它(使用命令行:regsvr32“DLLNAME”)来解决这个问题,或者您可以将它与您的可执行文件一起发布,它应该可以工作

警告:在将文件包含在您的软件中之前,请参阅以下文章... http://msdn.microsoft.com/en-us/library/ms235299.aspx

我对你的行为不承担任何责任

于 2011-08-05T13:08:19.637 回答