2013-10-28 49 views
0

當我嘗試在我的某個DLL中使用Boost.Log時,我在dllinit.cpp中收到一個斷言。使用Boost.Log(或Boost.Thread)時dllinit.cpp行703中的MFC ASSERT

我有一個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> 

但是這會導致內存泄漏? 這thread表示它將在1.40後修復,但我不知道,如果這已完成。 建議動態鏈接到Boost here沒有幫助。

詢問boost-users目前沒有幫助。

任何提示,我應該檢查什麼?

編輯: 它的配置爲標準DLL,但有一個dependecy上MFC100.dll,因爲我用的是API從afxwin.h獲得的應用程序的版本信息。

+0

請提供意見,爲什麼你downvote所以我可以改進我的方式:) – Simon

+0

你創建了什麼樣的DLL? MFC擴展DLL?標準DLL? MFC鏈接靜態或動態? – xMRi

回答

0

所以我在tools.dll中刪除了對MFC100.dll(GetVersionInfo工作時沒有afxwin.h)的依賴,所以在helper.dll中沒有依賴於MFC100.dll。

最後,我的DLL中沒有一個依賴於MFC,所以ASSERT也消失了。謝謝xMRi!