我正在开发一个执行另一个应用程序的应用程序,但我收到了这个错误:
the program can't start because MSVCR100.dll is missing from your computer
通过我的 C# 应用程序,我可以解决将此 .dll 复制到 windows/system32 文件夹中的问题吗? 或者存在另一种方法来做到这一点?
最佳答案
下面的链接指向 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 编译器开关。
关于C# 缺少 MSVCR100.dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6956747/