Windows多线程应用程序的编译和链接
编译多线程应用程序的第一步是要确保编译器使用了正确的运行时库:MS为C运行时库提供了几个不同的实现。这些版本在以下3个标准上有所不同:链接方式(静态or动态)、是否可再入(有一个库是为单线程应用程序设计的,是不可再入的;另一个库是为多线程设计的,是可再入的)、以及是否包含调试符号。
开关 | 含义 |
/MT | 使用静态链接的多线程应用程序 |
/MTd | 多线程应用程序调试使能 |
/MD | 多线程动态链接库 |
/MDd | 多线程动态链接库调试 使能 |
支持C程序的微软多线程库:
程序类型 | C运行时库 |
多线程程序 | LIBCMT.LIB |
支持调试的多线程程序 | LIBCMTD.LIB |
多线程DLL程序 | MSVCRT.LIB(MSVCRT.DLL的引入库) |
支持调试的DLL程序 | MSVCRTD.LIB(MSVCRTD.DLL的引入库) |
支持C++程序的微软多线程库:
程序类型 | C++运行时库 |
多线程程序 | LIBCPMT.LIB |
支持调试的多线程程序 | LIBCPMTD.LIB |
多线程DLL程序 | MSVCPRT.LIB(也使用MSVCRT.DLL) |
支持调试的DLL程序 | MSVCPRTD.LIB(也使用MSVCRTD.DLL) |
开发人员不能在单个进程空间中混合使用静态和动态库。当一个exe文件用到一个dll时,需要有开发人员保证使用相同版本的C运行时库来正确的构建exe和dll。
More:http://blog.donews.com/me1105/archive/2011/01/26/98.aspx
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述