我用C/C++編寫的程序修改了它的主函數,接受一些參數作爲輸入並返回一個變量作爲輸出並創建一個Win32 DLL。然後我創建了一個使用InterOp訪問第一個DLL的.NET DLL。現在,當我在我的C#應用程序中加載.NET DLL時,我從DLL中得到一個System.DllNotFoundException,這真的讓我感到困惑,因爲程序從來沒有存在內存問題,並且這兩個Win32/.NET dll都位於相同的目錄中從修改主函數,代碼沒有真正改變)。 該解決方案在this線程中提供,這是我原來的問題。我很確定答案是正確的,但我只是錯過了一些東西。.NET DLL中的System.DllNotFoundException
你可以下載我的VS解決方案Here。該解決方案包含三個項目:Win32 DLL,.NET DLL和引用.NET DLL的Winform應用程序(但是當嘗試測試時會給出DLL異常)。任何幫助或調試指導將不勝感激。
- 更新:我已經嘗試了下面的所有提示/建議,但我仍然得到完全相同的錯誤。如果它使事情變得更容易,我的VS解決方案可以在上面的超鏈接中下載。
確保本地DLL被複制到與EXE相同的目錄中,並且它的所有依賴項(如CRT)也都被安裝。如果您不知道可能會丟失什麼,請使用SysInternals的ProcMon。 –
@HansPassant如果您下載VS項目,您會注意到C#應用程序在同一個文件夾中同時包含dll和exe。順便說一下,我的Windows 7/8機器和Windows服務器上出現同樣的錯誤 – globetrotter