0

DLL API内にログを書き込む方法は?

私のプログラムでは、1 つのメインスレッドで 2 つのスレッドを使用しています。私は初期化しています:

LOGOG_INITIALIZE();

logog::LogFile errFile("log.txt");

メインスレッドに を使用しINFOERRメインスレッドで他の 2 つのスレッドを使用します。私のメイン スレッドは C++ DLL API を使用しています。メイン スレッドと他の 2 つの実行中のスレッドから完全にログを取得していますが、私の問題は、DLL API のフローからログを取得できないことです。DLL API で logog を使用してログを取得する方法。INFODLL API で使用している場合は、ここでクリアしたいと思います。クラッシュしていますがLOGOG_INITIALIZE();、DLL API 内でINFO実行すると実行されますが、何もログに記録されません。

4

1 に答える 1

0

正しく理解できた場合、状況は次のようになります。たとえば、共有ライブラリ (DLL) を使用するアプリケーション (EXE) が 1 つあります。EXE と DLL の両方から、ログを記録できるようにする必要があります。

前回、上記の状況で問題が発生した際に実行したlogogライブラリをチェックアウトしました。たぶん今は修正されていますか?

Windows (のみ!) では、logogライブラリはシンボルをエクスポートしません。単に DLL として使用する準備ができていません。これにより、 logogを静的ライブラリとしてビルドして使用することが強制されます。これにより、 logogライブラリ内の静的変数の問題が発生します。これは、一度だけ存在するはずですが、実際には、静的ライブラリがモジュール (EXE または DLL) にリンクされた回数だけ存在します。 )。

解決策は、 logogライブラリを DLL としてビルドして使用することです。

おそらくこれで問題が解決し、 logogライブラリのシンボルをエクスポートする努力が必要になるかもしれません。または、ライブラリのライターに連絡することもできます。

于 2012-09-05T06:53:58.713 に答える