2012-03-26 129 views
0

我有一个C++的dll其具有以下签名的导出函数....NET和C++的互操作性

__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

问题的一部分可能在于您如何调用方法,您能否显示一些试图从.Net调用该方法的代码。 – morechilli 2012-03-26 11:14:25

回答

1

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

+0

是的,现在它已被纠正,请为我的问题提供一个答案。 – Eshwar 2012-03-26 09:57:48