解决添加库的头文件导致编译出的目标文件过大问题

问题场景:

开发spdlog日志功能时,发现将spdlog库中的头文件包含到工程中的某个头文件中,编译出来的可执行文件很大,PC版增加了100多M,arm交叉编译版增加了2M,但是将spdlog库中的头文件包含到工程中的源文件中不会出现这个问题;

原因:暂时不明

解决方法:可以使用前向声明(forward declaration)来解决这个问题。前向声明是一种告诉编译器有关类型但不包含完整定义的方法。在这种情况下,可以在a.h中使用前向声明来告诉编译器关于类b的存在,而不必包含b.h。然后,在a.cpp或其他引用类b的地方,再包含b.h以获得完整定义。

cpp 复制代码
// 在工程的头文件中声明类

namespace spdlog {
    class logger;
}


//定义类对象
std::shared_ptr<spdlog::logger> m_rotating_logger;

然后在源文件中就可以使用这个对象

相关推荐
志栋智能3 分钟前
超自动化巡检:实现精细化运维管理的基础
运维·服务器·网络·人工智能·自动化
TOSUN同星3 分钟前
同星多工位自动化刷写台架,助力汽车电子高效量产与质量追溯
运维·自动化·汽车
夏日听雨眠13 分钟前
LInux(gcc处理器,库文件,动静态库)
linux·运维·服务器
xingfujie17 分钟前
Ubuntu K8s 1.28 kubeadm 高可用集群部署实战
linux·运维·服务器·docker·kubernetes
Tutankaaa23 分钟前
从单场到多场并发:知识竞赛平台的弹性扩展能力
服务器·笔记·学习·职场和发展
实心儿儿25 分钟前
Linux —— 进程间通信 - 命名管道
linux·运维·服务器
funnycoffee12332 分钟前
Cisco Firewpower 4100 9300 FXOS change management ip address
linux·数据库·tcp/ip
Agent手记41 分钟前
多渠道订单数据处理自动化,落地步骤与ERP打通方案 | 2026企业级智能体实战手册
运维·人工智能·ai·自动化
呉師傅44 分钟前
统信UOS如何安装本地打印机驱动以及URL查找网络打印机并安装驱动方法
运维·服务器·网络·windows·电脑
iFlow_AI1 小时前
构建自动化专属Paper库:用 Happy-Notes + iFlow-search-skill 搭建阅读写作流水线
运维·自动化·skill·心流·happy-notes