[英]Where to place an unmanaged DLL for use importing into a C# program?
這肯定是一個非常愚蠢的問題,但是在C#方面我還是很環保。
無論如何,我有一個DLL,並使用如下代碼行將其導入:
[DllImport(@"MyCoolDll")]
我直接從供應商提供的演示應用程序中刪除了此文件,但它一直抱怨找不到DLL。 實際錯誤(來自Visual Studio 2010)是這樣的:
Unable to load DLL 'MyCoolDll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
我試過將已編譯的DLL放在bin / debug和bin / release文件夾中。 我什至嘗試將其復制到system32,但似乎沒有任何效果。
有任何想法嗎?
您的DLL可能具有依賴項,這些依賴項也需要加載。 你檢查了嗎?
我知道您必須提供完整的文件名。 所以
[DllImport(@"MyCoolDll.dll")]
它應該在bin \\ debug或bin \\ release文件夾中工作。
更新資料
這是我學習如何導入非托管dll的地方。 如果它是可以正常運行的測試應用程序,請檢查它的bin \\ debug文件夾以查看與您的文件夾有何不同。 可能引用了一個額外的dll? 還要檢查示例應用程序中的所有引用,以確保您沒有丟失任何引用。
對我而言,關鍵是查看Visual Studio Build控制台輸出中列出的路徑,以查看二進制文件的放置位置。 一旦發現該錯誤,便知道在何處復制非托管dll,並修復了“無法加載DLL”錯誤。
據我所知,您必須提供擴展名:
[DllImport(@"MyCoolDll.dll")]
我通常將這些dll與程序二進制文件一起保存在本地(因此在bin \\ Debug中進行開發)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.