我正在尝试使用VS2012在我的DLL项目中使用g2log日志库。
问题在于查看文档LINK,它需要在开始时进行初始化,并在程序的生命周期内保持活力。 由于我没有主,并且使用DllMain没有帮助,我在哪里可以进行初始化? (我最近开始这个项目所以我也接受有关日志库的其他选项的建议)
答案 0 :(得分:4)
当您使用VS2012时,您可以使用C ++ 11,这意味着您可以使用线程安全静态,以便添加全局函数:
Logger& get_logger ()
{
static Logger logger;
return logger;
}
然后使用get_logg()来获取对象(如果你需要更复杂的构造/初始化,你也可以在这个函数中使用来自C ++ 11的std :: atomic<>)。这是一个使用std :: atomic_flag:
的版本Logger& get_logger ()
{
static std::atomic_flag is_initialized;
if (! is_initialized.test_and_set()) {
/* do lots of initialization */
}
return some_object;
}
我不使用或不知道g2log库,所以我不能给出更明确的例子。
答案 1 :(得分:1)
我打算做一些事情similar。在某个地方,你正在使用那个DLL。在您的用户代码中,您可以调用初始化过程,您也可以在其中配置g2log。