2011-11-04 110 views
2

我有一臺裝有Win7-64的新計算機。我安裝了VS2010,並試圖爲32位環境編譯一個C++非託管DLL。當我查看Dependency Walker中創建的DLL時,我發現我的文件是32位的,但所有依賴的DLL都是64位的,並且錯誤消息:找到了具有不同CPU類型的模塊。在64位計算機上編譯32位非託管DLL

我需要做些什麼才能使DLL可用,並且在depends.exe中看不到錯誤?

回答

1

您需要使用32位Dependency Walker(都可以安裝在同一臺機器上)。

Dependency Walker不夠聰明,無法使用WOW64目錄,因此只有在Dependency Walker本身在WOW64內運行時才能找到32位依賴關係。

+0

迷人。你是對的。但是當我嘗試在DLL中調用一個函數時,我仍然得到錯誤8007007E - 我曾希望這是因爲64/86不匹配。回到繪圖板... – erict

+0

@Erict:應用程序是否加載了32位的DLL? –

+0

我是個白癡。在我將項目轉換到64位環境的某個時候,我的輸出文件夾從bin \ Debug更改爲bin \ x86 \ Debug。我沒有注意到這一點,並且postbuild事件將DLL複製到bin \ Debug中。現在一切正常。謝謝! – erict