1

DLL の 1 つで Boost.Log を使用しようとすると、dllinit.cpp でアサーションを受け取ります。

ログ機能を含む tools.dll があり、Boost.Log を使用してログを記録するように実装しようとしました。この tools.dll は別の helper.dll によって参照されており、両方の DLL がアプリケーションで使用されています。

ただし、アプリケーションを起動すると、ASSERT が発生します。

これは、Boost 1.54 と (付属の) Boost.Log、Boost 1.48 と Boost.Log 1.1 で発生します。

たくさんのメーリング リストや古い投稿を掘り下げました。私がこれまでに理解したことは、Boost.Thread の _pRawDllMain ポインターに問題があり、コメントアウトすることを提案した人もいます

#include <boost/thread/detail/tss_hooks.hpp>

しかし、これはメモリリークにつながりますか?このスレッドは、1.40 以降に修正されると述べていましたが、これが行われたかどうかはわかりません。ここで提案されている Boost への動的リンクは役に立ちませんでした。

ブーストユーザーに尋ねることは、これまでのところ役に立ちませんでした.

ヒント、何を確認すればよいですか?

編集: 標準の DLL として構成されていますが、afxwin.h から API を使用してアプリケーションのバージョン情報を取得するため、MFC100.dll に依存しています。

4

1 に答える 1

0

そこで、tools.dll 内の MFC100.dll (GetVersionInfo は afxwin.h なしで動作します) への依存関係を削除したため、helper.dll 内の MFC100.dll への依存関係はなくなりました。

最後に、私の DLL は MFC に依存していないため、ASSERT も消えました。ありがとうxMRi!

于 2013-10-28T15:44:57.080 に答える