c++ - 在 VS 中编译 C++,运行时不需要 MSVCP120D.dll

标签 c++ dll visual-studio-2013

我正在尝试制作一个可以在任何 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/

相关文章:

c++ - 分配函数和返回指针

c++:为什么它总是先做最后一个参数?

c++ - “The procedure entry point… could not be located” 在错误的 DLL 中

azure - 在演示生产环境中测试搁置的更改?

google-chrome - Visual Studio 2013 native cordova 应用程序构建错误

c++ - 参数化非类型模板参数?

c++ - 3D vector 的 SSE 对齐

c# - Visual Studio 调试器忽略部分类中的方法

C# DLL 的插件架构

sql - 此平面文件结构需要 MySQL DDL,提供示例 : input columns, 数据、输出表/列等