2017-04-20 226 views
1

我正在將大型C++應用程序從Visual Studio 6遷移到VS2013中。我已經構建了exe和DLL。我已經解決了很多問題,並且能夠啓動該程序。程序啓動後,它停止運行。在使用Dependency Walker後,我相信問題是我的32位EXE和DLL試圖使用64位版本的MFC DLL。這裏有一個截屏:試圖使用64位MFC DLL的C++ 32位應用程序

enter image description here

我的理解是,32位應用程序會自動使用位於C的DLL:\ WINDOWS \ SYSWOW64目錄;但這似乎並沒有發生在這裏。

我已經在項目設置中尋找明顯的可能解決這個問題的東西,但我還沒有找到任何東西。我想知道你們有沒有遇到過這個問題,如果是的話,你們做了什麼來解決它?

感謝您的幫助!

的問候, 邁克

+4

DependencyWalker曾經是一個值得信賴的工具,在它的時間。今天,它變得更加困惑。如果你的應用程序確實起飛了,它不能靜態鏈接到一個錯誤位數的DLL。不要相信DependencyWalker。使用其他工具來診斷問題。 – IInspectable

+0

@IInspectable什麼工具? – sergiol

+1

您可以使用Process Monitor(從Microsoft免費下載)查看正在嘗試加載的文件。如果您在調試器下運行,您可以看到哪些文件正在您的模塊列表中加載。 –

回答

1

我要感謝IInspectable您指出與過程監控的問題。我沒有找到PM的特定替換工具,但我使用了Visual Studio的Debug-> Windows-> Modules對話框工具。我將調試器附加到可執行文件,我看到: enter image description here

這表明我最初的想法(即我的DLL指向錯誤的系統目錄)是不正確的。這是一種解脫!

Of'course我回到原來的這個問題之一,但至少我沒有浪費時間跟隨一個紅色的鯡魚。

謝謝大家的幫助!我很感激。

真誠, 邁克

相關問題