在C#应用程序中导入和使用C ++ DLL函数

时间:2014-11-06 12:50:50

标签: c# c++ dll dllimport

我正在开发一个应用程序,它使用硬件提供程序提供的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导致此问题的原因。)

任何建议都会很有意义:)

1 个答案:

答案 0 :(得分:-1)

在C#中使用C ++函数的更多帮助请查看以下URL

http://www.codeproject.com/Questions/107152/Using-a-C-dll-in-a-C-application