2

我正在尝试使用 VS2012 在我的 DLL 项目中使用 g2log 日志记录库。

问题是查看文档LINK ” 它需要在开始时进行初始化并在程序的生命周期内保持活动状态。由于我没有 main,并且使用 DllMain 没有帮助,我在哪里可以进行初始化?(我最近开始了这个项目,所以我也接受有关日志库其他选项的建议)

4

2 回答 2

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 库,所以我不能给出更明确的例子。

于 2012-10-13T19:46:26.417 回答
1

我正计划做类似的事情。在某处,您正在使用该 dll。在您的用户代码中,您可以调用初始化过程,您还可以在其中配置 g2log。

于 2012-10-23T14:12:22.193 回答