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

问题场景:

开发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;

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

相关推荐
Gong-Yu1 分钟前
MySQL数据库运维——性能优化进阶1️⃣
运维·数据库·mysql·性能优化
曦月合一7 分钟前
在 Linux 服务器上执行这些命令来导入 SSL 证书
linux·服务器·ssl
sdm07042711 分钟前
网络原理-5.NAT技术
服务器·网络·智能路由器
一拳一个娘娘腔15 分钟前
CVE-2026-46300 — “Fragnesia“ 深度拆解:当修复补丁亲手唤醒了另一只恶魔
linux·安全
蜀道山老天师18 分钟前
OpenClaw 从零部署 + 飞书机器人完整接入(实操篇)
运维·docker·容器·飞书
花伤情犹在18 分钟前
Hermes 清理飞书会话操作指南
linux·sqlite·飞书·agent·hermes
小小测试开发18 分钟前
Goose AI Agent 完全指南:Linux 基金会加持的开源 AI 编程助手
linux·人工智能·开源
风曦Kisaki22 分钟前
#Linux监控与安全Day01:Zabbix部署全流程,基础监控配置与自定义监控项
linux·运维·安全·云计算·zabbix
Tipriest_25 分钟前
没有nvidia的卡上装sogou拼音的特殊处理
运维·服务器·mysql
San813_LDD26 分钟前
[HTTPS/TCP]从文件索引到HTTP服务:Everything局域网共享文件实战
运维·tcp/ip·计算机网络·https