我正在尝试制作一个可以在任何 Windows 机器上运行而无需安装可视化 c++ 东西的二进制文件(我假设这就是 MSVCP120D.dll,但我的搜索对于这实际上是什么并不是很有成效) .我为一项任务制作了一个游戏,并想让其他人(没有安装 VS 的非开发人员)帮助我测试它,但他们不断收到错误消息,说上面的 dll 丢失。我没有使用任何 Visual C++ 的东西,并且设置了/Za 标志以确保它只是 ANSI C++。 Visual Studio 是否支持编译 ANSI C++,如果支持,我该如何让它不使用 Visual C++ 的东西,如果它不支持这个,我应该使用什么编译器?
最佳答案
如您所见 here ,MSVCP DLL 是 C++ 标准库的平台实现。简而言之,这意味着您不能在不需要这些库提供的“东西”的情况下分发您的应用程序。无论平台如何,所有编译器都需要某种标准库的实现。通常以库的形式分发。
但是,您可以分发您的应用程序,以便将“东西”直接内置到您的程序中,而不是在单独的 DLL 中提供。为此,您必须将应用程序静态链接到标准库。
有几种方法可以做到这一点。一种方法是在项目设置中。在“项目”>“配置属性”>“C/C++ 代码生成”>“运行时库”中,选择“多线程(/MT)”而不是“多线程(静态)”。
顺便提一下,你上面提到的“MSVCP120D.dll”中的“D”就是“Debug”的意思。这意味着您正在尝试分发程序的 debug 版本。你应该(几乎)永远不要这样做。而是分发发布版本。
关于c++ - 在 VS 中编译 C++,运行时不需要 MSVCP120D.dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20890458/