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

问题场景:

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

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

相关推荐
gaize12131 分钟前
腾讯云锐驰和蜂驰的区别
服务器·腾讯云
沉在嵌入式的鱼5 分钟前
linux串口对0X0D、0X0A等特殊字符的处理
linux·stm32·单片机·特殊字符·串口配置
gxh19926 分钟前
4步将HTTP请求升级为HTTPS
运维·服务器·网络协议·http·https
云和数据.ChenGuang37 分钟前
运维工程师技术之nfs共享文件系统
运维·服务器·运维技术·数据库运维工程师·运维教程
ITMr.罗41 分钟前
深入理解EF Core更新机制(开发中因为省事遇到的问题)
服务器·数据库·c#·.net
Better Bench1 小时前
Ubuntu aarch64\arm64系统安装vscode
linux·vscode·ubuntu
❀͜͡傀儡师1 小时前
Docker部署Rustscan端口扫描工具
运维·docker·容器
暴风游侠1 小时前
linux知识点-服务相关
linux·服务器·笔记
阿海5742 小时前
卸载nginx的shell脚本
linux·nginx
JANG10242 小时前
【Linux】常用指令
linux·服务器·javascript