从C#调用非托管C ++类DLL

时间:2010-09-23 07:11:31

标签: c# c++ dll

如何从C#中调用非托管C ++类DLL?

4 个答案:

答案 0 :(得分:4)

您可能希望为该类创建托管C ++包装器,使用/ clr(公共语言运行时支持)编译它,然后您可以在C#中使用它。 您可能还想看看PInvoke。

答案 1 :(得分:1)

CLR不支持直接使用本机C ++类,它更喜欢静态方法通过PInvoke或COM接口调用以通过COM互操作使用。所以需要某种C ++包装器。

答案 2 :(得分:0)

答案 3 :(得分:0)

例如:

public unsafe class CppFunctionImport
{
    [DllImport("ImageProcessingCpp.dll", EntryPoint = "PerformMovingAverage", ExactSpelling = true, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]//!-!
    public static extern void PerformMovingAverage
    (
        ref byte *image,
        int width,
        int height,
        int stride,
        int kernelSize
    );
}

创建小包装器,导入所需的功能并调用