我的應用程序使用VC6 sp6編譯,使用DBGHelp.lib獲取堆棧信息。代碼在調試和發佈編譯時是相似的。 問題是執行調試版本時,DBGHelp.dll加載msvcrt.dll(發行版)。無論如何,我的調試鏈接已經加載msvcrtd.dll。 所以我最終在調試版本的過程中同時擁有msvcrtd.dll和msvcrt.dll。 dsp被設置爲加載默認庫,而msvcrt(d).lib根本沒有被直接提及。 如果我拿出使用DBGHelp.dll的代碼並從dsp鏈接列表中刪除DBGHelp.lib,則不會加載msvcrt.dll。DBGHelp.dll在調試版本中導致加載msvcrt.dll
我該如何解決這個問題?
我需要在我的調試執行中只有msvcrtd.dll。
是否有一個特殊版本的DBGHelp.dll用於調試(將使用msvcrtd.dll)?
Rational Purify(內存泄漏分析器)給了我一個關於它們兩者的警告。我其實不知道這會產生什麼影響。你確定把他們倆都沒有問題嗎? – itaj 2010-10-25 11:41:34
@itaj - 我會挖掘一下,但我無法想象爲什麼這是一個問題,只要內存模型混雜在一起。 dbghelp.dll會返回你分配的內存嗎?這不是你應該沒問題。由於DLL具有C接口,所以C +類沒有問題。 – 2010-10-25 12:00:42
DBHelp沒有混合所有權(沒有混合分配/免費),如果發生這種情況,它很可能立即崩潰應用程序。我目前沒有任何問題,我只是假定發佈msvcrt不應該在調試版本中加載。 – itaj 2010-10-25 13:52:12