2016-08-25 42 views
1

我構建了一個用於C#windows應用程序的C++ DLL,該DLL鏈接到一些Windows API。如何在不安裝Windows SDK的情況下在客戶端PC中使用已編譯的DLL?

但是,當我在乾淨的Windows 7上運行它時出現錯誤,它說「System.DllNotFoundException:無法加載DLL」。

如果我安裝Windows SDK,那麼一切都很好。任何人都可以告訴我如何在不安裝Windows SDK的情況下解決問題?

+0

爲什麼你不想安裝WSDK? – Rakete1111

+3

我認爲客戶端的計算機不應該要求開發人員工具,如SDK,我不認爲是正確的或不... –

+1

「缺失的DLL」的第一個嫌疑犯將是C++運行時。如果只在乾淨的Windows 7盒子上安裝C++ Runtime(對於您使用的Visual Studio版本),會發生什麼情況?另一種方法是(如果你不能從你的代碼中確定這一點)是使用正派的查看器來識別缺失的dll(如Dependency Walker)。一經確定,缺失的子系統將被安裝或修復的路徑包括其位置。 – Niall

回答

4

「缺少DLL」的第一個嫌疑犯是C++運行庫,它通常不是Windows操作系統安裝的一部分。如果只在乾淨的Windows 7盒子上安裝C++ Runtime(對於您使用的Visual Studio版本),會發生什麼情況?

另一種確定缺失依賴關係的方法是,使用依賴關係查看器來確定缺失的dll(如Dependency Walker)。一旦確定,缺失的子系統將被安裝,或修復路徑以包含其文件位置。

您是否正在發佈dll的「調試」或「發佈」版本?

我正在使用「調試」之一。

C++運行時的重新分配不包括「調試」版本,只包含「版本」版本。在「發佈」模式下構建你的dll並在Windows 7機器上運行該dll。

「調試」版本通常只用於調試dll /應用程序,因此,對SDK的需求是合理的。反過來,當不調試應用程序時,SDK的使用不太合理 - 因此您需要將「發佈」版本分發給您的客戶端。

相關問題