2012-03-26 158 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