簡體   English   中英

在何處放置非托管DLL以用於導入C#程序?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM