在C#应用程序中导入并使用C++DLL函数
本文关键字:C++DLL 函数 导入 应用程序 | 更新日期: 2023-09-27 18:29:19
我正在开发一个应用程序,该应用程序使用硬件提供商提供的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"CdbClientUnit",在我单击"确定"后,在我调用库函数occurs的行上出现了一个未解决的异常。
异常显示:System.DllNotFoundException:HRESULT中的异常:0x8007045A
我在网上发现,这可能是由于CaGe.DLL所需的DLL丢失引起的,所以我试图通过Dependency Walker将DLL放入,但结果对我来说有点困惑。在CaGe.DLL下有WS32_2.DLL、VERSION.DLL、KERNEL.DLL和USER32.DLL选项卡,我怀疑我需要的库在USER32.DLL标签下的某个位置,但我一个都认不出来(如果一个丢失的DLL是导致这个问题的原因)。
任何建议都会被广泛认可:)
有关在C#中使用C++函数的更多帮助,请查看以下URL
http://www.codeproject.com/Questions/107152/Using-a-C-dll-in-a-C-application