我正在開發一個應用程序,該應用程序使用硬件提供程序提供的C++ DLL與某些硬件進行通信。我也有這個DLL的頭文件,但沒有源文件。在我的C#應用程序,我試圖導入和調用DLL的功能是這樣的:在C#應用程序中導入並使用C++ DLL函數
public class MyClass
{
[DllImport("CaGe.dll")]
public static extern long someLibraryFunction();
public void callLibFunction()
{
Console.WriteLine("function call: " + someLibraryFunction());
}
}
的library.dll文件位於同一文件夾中的文件MyClass.cs,也是項目的其餘部分文件。然而,當我開始調試會話時,我首先從系統收到一個對話窗口,內容如下:CAGE InitDll:加載庫「CdbClientInit」上的Erro,當我點擊OK後,在我調用庫函數的行上出現一個無法處理的異常。
異常說:System.DllNotFoundException:從HRESULT異常:0x8007045A
我在互聯網上,這可以通過該CaGe.dll需要一個缺少DLL引起上找到,所以我試圖通過把DLL Dependency Walker,但結果對我來說有點混亂。在CAGE.DLL下有WS32_32.DLL,VERSION.DLL,KERNEL.DLL和USER32.DLL選項卡,我認爲我需要的庫是USER32.DLL選項卡下的somwhere,但我不認識它們中的任何一個如果缺少DLL是導致此問題的原因)。
任何意見將非常appretiated :)
問題可能是更可能的是你的程序無法找到' CaGe.dll'。你說它和你的源文件位於同一個目錄中,但這不是你的可執行文件生成的位置(默認情況下)。嘗試將.dll放到你的程序可執行文件所在的Bin \ Debug或Bin \ Release中。 – 2014-11-06 12:54:42
是的,解決了它,謝謝:) – 2014-11-06 12:59:00