【BUG FIX】BOOST LOG在多模块(multi-module)[DLL]情景下使用

本文档描述了在开发一个辅助软件A作为DLL,并在软件B中使用时,遇到BOOST_LOG配置失效的问题。经过调查,发现原因是由于在多模块(DLL)环境中,每个模块的logging::core实例地址不同。解决方案是将BOOST_LOG库编译为shared-object,并在软件A和B中统一使用shared类型的库,从而确保logging::core的正确配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

情况介绍:

    笔者开发一款辅助软件A,在此中提供BOOST_LOG,并将辅助软件A打包成为DLL,提供在软件B中使用。在软件A中,进行了初始化操作,对logging::core进行了相关配置,添加了两个sink,分别用于输出到file和console中,并设置了格式,然后在软件B中通过BOOST_LOG_TRIVIAL使用。然而,在软件B中发现,对logging::core进行的配置全部失效,BOOST_LOG_TRIVIAL完全是按照其默认配置,进行的打印。

问题调研:

    1. 笔者首先确定配置代码是正确的,并且,对logging::core进行配置的语句的确是有执行,故而是生成DLL到使用DLL的过程中,出现了导致无效配置的原因;

    2. 配置代码的确执行了,但是配置却没有在使用时起到作用,此时,笔者看到了文章1,并分别在软件A中和软件B中打印了logging::core的地址,发现其二者的确不一致;

    3. 问题原因已经找到,笔者继续google解决方法,在文章2中找到了一个方法,即:shared-object,"如果要在多模块(DLL)场景中使用BOOST_LOG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值