.NET和C ++互操作性

时间:2012-03-26 08:49:48

标签: c++ .net interop

我有一个C ++ dll,它的导出函数具有以下签名......

__declspec(dllexport) __stdcall
 void Paint(LPDISPATCH& disp, VARIANT& x, VARIANT& y, VARIANT& z);

我想从C#.NET调用这个导出的函数。为此,使用以下原型......

[DllImport("xyz.dll", 
CallingConvention = CallingConvention.StdCall)
public static extern void Paint(
            [MarshalAs(UnmanagedType.IDispatch), In, Out] ref object which,
            [MarshalAs(UnmanagedType.I4), In, Out] ref object x,
            [MarshalAs(UnmanagedType.I4), In, Out] ref object y,
            [MarshalAs(UnmanagedType.I4), In, Out] ref object x);

当我试图调用该调用时,它抛出一个异常,说是尝试读/写无效的内存。

关于如何从.NET调用此C ++ API,请告诉我。

  

非常感谢,Sundareswaran Senthilvel

1 个答案:

答案 0 :(得分:1)

您有不同的返回类型,它被声明为返回void,但您使用bool导入它。