在 C/C++ for Windows 中开发时省略 msvcr100.dll
Omit the msvcr100.dll when developing in C/C++ for windows?
是否可以在 C/C++ 中为 Windows 进行开发,而不链接到 msvcr100.dll?
我知道这是Windows的标准c库,但是我想知道如果我没有安装Visual Studio或Redistributable软件包,计算机上的所有程序如何运行?
在"解决方案资源管理器"窗口中右键单击项目,依次单击"属性"、"C/C++"、"代码生成"、"运行时库"设置。 将其更改为/MTd。 对"发布"配置重复此操作,选取"/MT
">您现在将链接 CRT 的静态版本,您使用的任何函数都将直接链接到 EXE,而不是在运行时从 msvcr100.dll 获取它们。 因此,您不再需要将 DLL 与程序一起部署。
如果创建自己的 DLL,请避免使用此选项。 然后,这些 DLL 和 EXE 使用完全相同的 CRT 非常重要,这样它们才能共享相同的 CRT 状态和相同的堆。 因为如果他们不这样做,那么你在传递C++对象或指针时会遇到令人讨厌的问题,这些对象或指针需要从一个代码块释放到另一个代码块。 如果您幸运的话,则为访问冲突,如果您不幸运,则为内存泄漏。
如果您将项目限制为仅使用 C 编程语言/库,那么您可以仅针对MSVCRT.lib的链接,该链接在自Windows XP SP3以来的任何Windows版本中都完全烘焙。
这意味着,您不能依赖于MSVCR100.DLL(或任何其他Visual Studio DLL(,而只能链接到MSVCRT中的标准C函数。顺便说一下,这种技术用于在Microsoft保护伞下开发的CoApp项目中,因此我认为在像您这样的情况下,这是一个很好的实践。
简单地说,下载Windows DDK并仅针对$(DDKInstallPath)libCrt$(DDKPlatform)msvcrt.lib
链接
在Windows上,我怀疑是否有可能创建一个不以某种方式使用CRT的非平凡程序。
可以在不链接到 msvcrXXX 的情况下使用 CRT.dll - 只需链接到静态库即可。 但要解决您的问题:
如果我没有视觉,计算机上的所有程序如何运行 Studio 或可再发行组件包已安装?
如果电脑上的程序链接到 msvcrtxxx.dll,则它们无法。 Sinmply,特定程序所需的红色可能已经在您的PC上安装了。 或者至少是程序所需的编辑部分。
- C++如何告诉开发人员在设计模板(如Java接口)时实现某事
- 开发简单的时钟和日期类时遇到问题
- 不理解将 .pb 转换为 ff-lite 时的平均值和标准开发值
- 在 Cloud9 上安装 AWS C++ 开发工具包时出现问题
- 当我使用 GUI 开发 QT 动态库时,如何查看我的 QT UI?
- 开发时C++ .lib,运行应用程序时.dll
- 在 2D 网格上开发 A* 时卡住/一般帮助
- 我在使用 ffmpeg 进行开发时遇到的编译错误
- VIM语法在使用MBED开发时找不到标头文件
- numpy.core.multiarray在通过Xcode中开发的C 应用程序调用Python模块时未能导入
- 为 C++ 开发设置 GTK+ 时遇到问题
- 为使用boost的预开发库构建c++包装器时未解决的外部问题
- 开发人员在Dev C 中编译代码时,我会收到此错误:[错误] ID返回1退出状态
- 我正在尝试使用C++开发XML解析器.但是在返回时声明的枚举值上遇到错误
- 在使用 axis2c 开发 Web 服务时,如何访问轴骨架代码中的服务参数
- 部署时,在开发计算机上运行应用不会运行
- 开发C++在运行大内存程序时崩溃
- Mac应用程序开发:如何在安装时选择应用程序语言
- R包开发中加载时设置的正确做法
- 当我运行此代码时,开发人员C++不断崩溃.我不明白为什么