2012-11-02 53 views
0

在乾淨的計算機上(無視覺工作室),我壓縮了其他人(在我的電腦上工作)和其他人試圖調試文件夾啓動程序,我得到了錯誤C++ dll找不到,而C#dll全部找到(並在我的電腦上工作)

System.DllNotFoundException:無法加載DLL'HookHandler.dll':無法找到指定的模塊。 (異常來自HRESULT:0x8007007E)

我當時讓他安裝 http://www.microsoft.com/en-us/download/details.aspx?id=8328

思維,這將有助於。任何想法,爲什麼它不在他的電腦上找到DLL,但在我的電腦上發現它很好?

編輯:我應該注意到HookHandler.dll與EXE位於同一個文件夾中。再次,它運行在我的電腦上,當我運行exe文件和HookHandler在我的文件夾中。我使用HookHandler將其壓縮並提供給其他人,並且它不起作用,並且我驗證了HookHandler在他的文件夾中。

因爲某些原因,安裝visual studio修復了這個問題。所以它一定是HookHandler所依賴的東西,所以我需要嘗試ProcMon工具或depends.exe來查看HookHandler取決於我的猜測。

感謝, 院長

+2

您可以使用[depend.exe](http://dependencywalker.com)查看HookHandler.dll是否缺少依賴關係。 –

+1

如果您不知道缺少什麼,請讓他運行SysInternals的ProcMon工具並向您發送日誌。 –

+0

什麼是HookHandler.dll?我當然不是微軟的圖書館。谷歌搜索它帶來了這一頁:) – 2012-11-02 17:31:34

回答

0

好吧,這是非常非常奇怪。我們使用調試配置來構建我們的東西,並隨着我們想要的所有生產線數量和所有好東西一起交付。這些信息值得使用發佈版本的任何小的性能改進的好處(加上我們的性能比我們現在需要的方式更多)。

也就是說,換掉C++ dll,pdf,ilk等Release版本修復了這個問題!!!!!所以它沒有找到它們,而是使用一些visual studio dll來處理它,因爲它是在Debug配置中編譯的。

所以基本上任何C++ DLL都必須以發佈模式編譯,而我們的其他項目現在使用調試模式編譯並解決了問題。

1

我的猜測是,HookHandler.dll是不是在您的本地項目和VS是從別的地方抓住你的計算機上。如果是這樣,你所要做的就是:

在你的項目中(使用VS),查看HookHandler.dll的屬性,將'Copy Local'設置爲True,重建,重新編寫和重新發送。

我以前曾經遇到過這個問題(但是有一個不同的DLL),並且這個問題已經解決了,希望它對你有用。

+0

HookHandler.dll是在與EXE相同的文件夾。我應該注意到我檢查了那個,對不起。 –

0

確保DLL在bin中。屬性 - >複製本地 - >始終

你不能指望人們對他們的計算機晦澀垃圾一樣HookHandler.dll:對