VC-LTL:优雅地编译更轻量级的二进制文件
项目介绍
VC-LTL 是一个基于微软 Visual C++ 运行时库(MS VCRT)的开源 CRT 库,旨在减少程序的二进制文件大小,并摆脱对微软运行时 DLL 的依赖,如 msvcr120.dll
、api-ms-win-crt-time-l1-1-0.dll
等。VC-LTL 最初是为 Dism++ 项目开发的专用运行时库,于 2017 年 3 月 6 日从 Dism++ 源代码中分离并开源。
在大型项目中,如果所有二进制文件都使用静态编译,会占用大量磁盘空间,并可能导致由于纤程本地存储(FLS)限制而崩溃。VC-LTL 通过使项目使用 Windows 内置的 msvcrt.dll
,有效解决了 C 运行时部署问题和 FLS 限制问题,并显著减少了二进制文件的大小。
VC-LTL 完全免费,可用于商业用途。如果你在项目中使用了 VC-LTL,希望你能提及它,以便帮助更多人。
项目技术分析
工作原理
使用 VC-LTL 后,二进制文件将动态链接到 Windows 内置的 msvcrt.dll
,从而减少二进制文件的大小。通常情况下,使用 VC-LTL 的项目可以正常使用 C 运行时和 STL。然而,VC-LTL 不支持 MFC 项目,因为支持 MFC 项目过于复杂。
使用 VC-LTL 后,C++ 源代码编译的二进制文件大小将减少约 30%,而纯 C 源代码编译的二进制文件大小将减少约 50%。
技术亮点
- 优雅的引用方式:只需添加一个属性表,即可享受极致的体积体验。
- 无缝使用最新 C/C++ 库:支持最新编译器和最新规范,如异常流防护(guard:cf)、静态对象线程安全初始化(threadSafeInit)等。
- 更好的兼容性:即使想兼容 Windows XP RTM,也可以安心使用新编译器。
- 完全开放代码:广泛接受用户意见,欢迎大家踊跃提交 PR,为 VC-LTL 添砖加瓦。
项目及技术应用场景
应用场景
VC-LTL 适用于需要减少二进制文件大小、简化运行时依赖的项目。特别适合以下场景:
- 大型项目:减少静态编译带来的磁盘空间占用和 FLS 限制问题。
- 嵌入式系统:减少对额外运行时 DLL 的依赖,简化部署。
- 性能敏感的应用:减少二进制文件大小,提高加载速度。
支持的开发工具和平台
- 开发工具:支持 Visual Studio 2015 及以上版本,包括 Clang with Microsoft CodeGen、Clang-LLVM 等。
- 构建工具:支持 Visual Studio、CMake、NMake、CL、QMake 等。
- 操作系统:支持 Windows XP 及以上版本,包括 Windows Server 2003 到 Windows Server 2019。
项目特点
主要特点
- 减少二进制文件大小:通过动态链接
msvcrt.dll
,显著减少二进制文件大小。 - 简化运行时依赖:摆脱对微软运行时 DLL 的依赖,简化部署。
- 高兼容性:支持 Windows XP 及以上版本,即使在未安装补丁的环境中也能正常运行。
- 易于集成:通过 NuGet 或属性表轻松集成到现有项目中。
使用方法
VC-LTL 提供了多种集成方式,包括:
- Visual Studio:通过 NuGet 包管理器或属性表集成。
- CMake:通过
VC-LTL helper for cmake.cmake
集成。 - NMake/CL:通过
VC-LTL helper for nmake.cmd
集成。
常见问题
- 未共享到
msvcrt.dll
:确保正确引用 VC-LTL,并检查生成日志。 - 无法解析外部符号
delete
等:确保正确引入vc.lib
和msvcrt_Platform.lib
。 - 检测到
RuntimeLibrary
的不匹配项:确保所有静态库都使用 VC-LTL 重新编译。
总结
VC-LTL 是一个强大且易于集成的开源 CRT 库,能够显著减少二进制文件大小,简化运行时依赖,并提供高兼容性。无论你是开发大型项目、嵌入式系统,还是性能敏感的应用,VC-LTL 都能为你带来显著的优化效果。立即尝试 VC-LTL,体验更轻量级的二进制文件编译吧!
鸿蒙开发工具大赶集
本仓将收集和展示鸿蒙开发工具,欢迎大家踊跃投稿。通过pr附上您的工具介绍和使用指南,并加上工具对应的链接,通过的工具将会成功上架到我们社区。012hertz
Go 微服务 HTTP 框架,具有高易用性、高性能、高扩展性等特点。Go01每日精选项目
🔥🔥 每日精选已经升级为:【行业动态】,快去首页看看吧,后续都在【首页 - 行业动态】内更新,多条更新哦~🔥🔥 每日推荐行业内最新、增长最快的项目,快速了解行业最新热门项目动态~~029kitex
Go 微服务 RPC 框架,具有高性能、强可扩展的特点。Go00Cangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。Cangjie057毕方Talon工具
本工具是一个端到端的工具,用于项目的生成IR并自动进行缺陷检测。Python040PDFMathTranslate
PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI 等服务,提供 CLI/GUI/DockerPython06mybatis-plus
mybatis 增强工具包,简化 CRUD 操作。 文档 http://baomidou.com 低代码组件库 http://aizuda.comJava03国产编程语言蓝皮书
《国产编程语言蓝皮书》-编委会工作区018- DDeepSeek-R1探索新一代推理模型,DeepSeek-R1系列以大规模强化学习为基础,实现自主推理,表现卓越,推理行为强大且独特。开源共享,助力研究社区深入探索LLM推理能力,推动行业发展。【此简介由AI生成】。Python00
热门内容推荐
最新内容推荐
项目优选









