我有一个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
答案 0 :(得分:1)
您有不同的返回类型,它被声明为返回void
,但您使用bool
导入它。