c++ - 用 C/C++ for windows 开发时省略 msvcr100.dll?

标签 c++ c winapi visual-c++ msvcr100.dll

是否可以在 Windows 中使用 C/C++ 进行开发而不链接到 msvcr100.dll?

我知道这是 windows 的标准 c 库,但我想知道如果我没有安装 Visual Studio 或 Redistributable 软件包,我的计算机上的所有程序如何运行?

最佳答案

在“解决方案资源管理器”窗口中右键单击您的项目,属性,C/C++,代码生成,运行时库设置。将其更改为/MTd。重复发布配置,选择/MT

您现在将链接 CRT 的静态版本,您使用的任何函数都将直接链接到您的 EXE,而不是在运行时从 msvcr100.dll 中获取它们。因此,您不再需要将 DLL 与您的程序一起部署。

如果您创建自己的 DLL,请避免使用此选项。然后,这些 DLL 和 EXE 使用完全相同的 CRT 变得很重要,因此它们将共享相同的 CRT 状态和相同的堆。因为如果他们不这样做,那么在将需要从一个代码块释放到另一个代码块的 C++ 对象或指针传递时,您将遇到棘手的问题。如果幸运,则为 AccessViolation,否则为内存泄漏。

关于c++ - 用 C/C++ for windows 开发时省略 msvcr100.dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10635369/

相关文章:

c++ - 无法弄清楚这个错误

c++ - "child control"、 "child window"和 "child window control"之间有区别吗?

C++ Windows 凭据提供程序进度屏幕

c++ - 在将第 N 个元素插入元素 K-1 的 vector 后,对象指针 vector 的元素 K 变为空

c++ - 在 C++ 中的模板中声明另一个模板变量

c++ - 实现查找表

c - 尝试打印出所有输入字符的 getchar() != EOF 的返回值

从 C 中的不同文件调用方法

C - 通知另一个线程清理并退出

winapi - 从 Raku/Perl6,如何读取这个注册表项?