2

VS2012 を使用して、DLL プロジェクト内で g2log ログ ライブラリを使用しようとしています。

問題は、ドキュメントLINKを見ると、最初に初期化して、プログラムの存続期間中存続する必要があることです。メインがなく、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 に答える