我正在开发一个应用程序,它使用硬件提供程序提供的C ++ DLL与某些硬件进行通信。我也有这个DLL的头文件,但没有源文件。在我的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:Erro on load library“CdbClientInit”,然后在我点击OK之后,我调用库函数的行上出现了一个无效的异常。
异常说:System.DllNotFoundException:来自HRESULT的异常:0x8007045A
我在互联网上发现这可能是由于CaGe.dll需要丢失的DLL造成的,所以我试图通过Dependency Walker放置DLL,但结果对我来说有点混乱。在CAGE.DLL下有WS32_32.DLL,VERSION.DLL,KERNEL.DLL和USER32.DLL选项卡,我认为我需要的库是在USER32.DLL选项卡下的somwhere,但我不认识它们中的任何一个(如果缺少DLL导致此问题的原因。)
任何建议都会很有意义:)
答案 0 :(得分:-1)
在C#中使用C ++函数的更多帮助请查看以下URL
http://www.codeproject.com/Questions/107152/Using-a-C-dll-in-a-C-application