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

问题场景:

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

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

相关推荐
qq_381338501 分钟前
1Panel 快速部署 Node+MongoDB+Nginx 项目实操流程(附避坑指南)
linux·运维·服务器
Jorunk7 分钟前
如何配置实验室的服务器
运维·服务器
双层吉士憨包13 分钟前
如何注册Talkatone免费美国号码?实测有效方案
大数据·运维·网络
空空空空空空空空空空空空如也23 分钟前
QT编译程序在Ubuntu下不进桌面直接启动和避免重复启动的方法
linux·运维·ubuntu
辰尘_星启26 分钟前
解决幽灵容器
linux·docker·容器·机器人·嵌入式
一人の梅雨27 分钟前
义乌购商品详情接口进阶实战:批发场景下的精准解析与高可用架构
java·服务器·前端
小王努力学编程37 分钟前
LangChain——AI应用开发框架
服务器·c++·人工智能·分布式·rpc·langchain·brpc
呱呱巨基42 分钟前
Linux Ext系列文件系统
linux·c++·笔记·学习
2501_945837431 小时前
事件驱动无服务器,Knative重塑云服务器原子化运算形态
服务器
有味道的男人1 小时前
如何使用招标网API获取项目详情?
java·服务器·前端