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