情况介绍:
笔者开发一款辅助软件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

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

被折叠的 条评论
为什么被折叠?



