2008-11-16 127 views

回答

0

我建議你使用FileMon(sysinternals.com)來檢查你對圖書館位置的假設是否正確。

1

加載DLL時,DllImport不會查詢PATH環境變量。我相當肯定,DllImport遵循標準規則,用於在按名稱引用DLL時在本機程序中加載本地DLL。這是一篇文章,詳細介紹這些規則

http://msdn.microsoft.com/en-us/library/ms682586.aspx

我發現加載DLL的簡單的方法是把它放在相同的位置,因爲我執行程序。

+1

也許我很想理解你的答案,但它聽起來不對。我創建了一個簡單的asp.net web應用程序,它使用DllImport屬性從一個自定義的C++ dll調用一個簡單的導出函數。在不更新路徑環境變量的情況下,我得到「無法加載DLL」異常。但是,當路徑環境變量更新爲包含dll的路徑時,我可以調用外部函數。 – 2011-01-09 04:58:56

11

「無法找到DllName.dll」也可能表示DllImport未找到DllName.dll依賴項之一。

抓住Dependecy Walker來檢查你丟失的依賴性。

0

我在我的C#應用​​程序中使用了最長時間的const string lcms2Path = "C:\\lcms2.dll";。但最後把DLL移到了BIN文件夾中,這個作品完美[DllImport("lcms2.dll")]

相關問題