【发布时间】:2021-11-26 04:25:18
【问题描述】:
在使用 Visual Studio 2019 在 W10 上测试 Boost.log 后,我尝试使用适用于 Linux 的 Windows 子系统在 ubuntu 中运行相同的应用程序(编写一个简单的日志文件)。
因此,我使用相同的源文件创建了一个新项目,将其配置为使用 GCC 在 WSL 上构建,并向链接器指示要在 WSL 上查找的 boost 库。
起初,我遇到很多链接错误,例如“未定义对 boost::log::v2s_mt_posix 的引用...”添加后消失了
#define BOOST_LOG_DYN_LINK 1 此处建议:linker error while linking boost log tutorial (undefined references)
这样我就可以开始使用 VS 进行调试,但最终在此函数中调用 logging::add_common_attributes() 时出现“分段错误”
void LOG_InitLogging()
{
logging::register_simple_formatter_factory<logging::trivial::severity_level, char>( "Severity" );
logging::add_file_log(
keywords::file_name = "s.log", //output file
keywords::format = "[%TimeStamp%] [%LineID%] [%ThreadID%] [%ProcessID%] [%Severity%] ",
keywords::auto_flush = true
);
logging::add_common_attributes();
}
我不太熟悉 linux 或链接库,因此非常感谢一些指导。
谢谢!
【问题讨论】:
-
您发布的代码没有明显错误,所以我猜问题出在其他地方。请发布完整的简短重现,其中包含编译器选项和崩溃的回溯。
-
@AndreySemashev 在您发表评论后,我试图再次重现该问题,但没有发生。就像魔术一样。但是,有一个解释。我在 VS 上包含了在我的 Windows 系统中提升标头的路径,因此 IntelliSense 不会显示那些红色下划线(在我可以为此目的的地方阅读)。最终我删除了那条路径,这是我发帖后的唯一区别。刚刚测试再次使用路径并得到分段错误。
标签: c++ boost windows-subsystem-for-linux boost-log