spdlog linux编译出错,spdlog在工厂方法上崩溃

在Linux上使用spdlog进行日志记录时遇到问题。编译完成后,当尝试创建记录器或设置记录模式时,代码因段错误而崩溃。问题可能与spdlog的formatter类有关,它在库中被错误地设置为null。问题仅在将Logger类放入共享库并链接到该项目时出现,而在可执行文件中直接使用spdlog则不会出现问题。
摘要由CSDN通过智能技术生成

昨天我已经开始将spdlog包含到我的个人项目中以进行日志记录。 到目前为止,我在使库包含工作时遇到了一些问题,但是现在已经完全解决了。

现在,一切都可以正常编译,找到所有标头,但是当我尝试创建记录器或只是设置记录模式时,由于段错误而导致代码崩溃。 更具体地说,无论我第一次在程序中从spdlog命名空间调用哪个函数都会导致崩溃。

我有一个类,它从spdlog提取一些部分(基于此 spdlog ),如下所示://Logger.hpp

#ifndef TE_LOGGER_HPP

#define TE_LOGGER_HPP

#include

namespace te {

class Logger {

public:

static void Init();

inline static std::shared_ptr<:logger> &getCoreLogger() {

return sCoreLogger;

}

inline static std::shared_ptr<:logger> &getClientLogger() {

return sClientLogger;

}

private:

static std::shared_ptr<:logger> sCoreLogger;

static std::shared_ptr<:logger> sClientLogger;

};

}

#endif //TE_LOGGER_HPP

//Logger.c

spdlog是一个C++的快速日志库,它具有非常高的性能和灵活性,但是在编译过程中可能会遇到较慢的情况。 首先,编译速度慢可能是由于spdlog源代码的规模较大导致的。spdlog库实现了多种日志记录器,支持多种日志格式和输出方式,因此其源代码比较庞大。在编译时,需要将所有相关代码进行预编译、优化和链接,这个过程可能比较耗时。 其次,spdlog库在编译过程中可能使用了一些较复杂的C++特性或者依赖其他库,这些都可能增加编译时间。例如,spdlog的一些特性可能需要使用模板、多态或者元编程等高级C++特性,这些特性在编译时需要进行多次实例化和编译,从而增加了编译时间。另外,spdlog也可能依赖其他库,例如boost等,这些库的编译也会影响到spdlog编译性能。 针对spdlog编译慢的问题,可以采取以下措施来优化编译速度: 1. 使用预编译头文件(PCH):可以将一些通用的头文件预先编译,并在编译过程中引入,从而减少代码的重复编译。 2. 分开编译:对于较大的项目,可以考虑将spdlog的源代码与其他代码分开编译,从而缩小编译范围,减少编译时间。 3. 编译优化选项:可以使用一些编译优化选项,如-O2或者-O3,来提高编译速度和执行效率。 4. 移除不必要的特性或者依赖:如果项目中并未使用spdlog的所有特性或者依赖的其他库,并且对编译速度有着较高的要求,可以考虑移除不必要的特性或者依赖,从而减少编译时间。 总之,虽然spdlog编译可能较慢,但其高性能和灵活性使其成为C++开发中一个值得考虑的日志库。通过合理的优化编译配置和编译选项,可以在保证性能的前提下,提高编译速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值