VS2012 を使用して、DLL プロジェクト内で g2log ログ ライブラリを使用しようとしています。
問題は、ドキュメントLINKを見ると、最初に初期化して、プログラムの存続期間中存続する必要があることです。メインがなく、DllMain を使用しても役に立たないので、どこで初期化を行うことができますか? (私は最近このプロジェクトを開始したので、ロギング ライブラリの他のオプションについての提案も受け付けています)
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ライブラリを使用または知らないため、これ以上明確な例を示すことはできません。
私は似たようなことを計画しています。どこかで、その dll を使用しています。ユーザー コードでは、g2log も構成できる初期化手順を呼び出すことができます。