2012-03-26 14 views
0

ich eine C++ DLL, die eine exportierte Funktion mit der folgenden Signatur ....NET und C++ Interoperabilität

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

Ich möchte die diese exportierte Funktion von C# .NET nennen. Für diese heißt gebrauchte die following prototype ...

[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); 

Wann i tried zu invoke die call, ihn heißt throwing ein exception saying dass Attempted zu read/write memory Which heißt invalid.

Bitte beraten Sie mich dabei, wie Sie diese C++ API von .NET aufrufen/aufrufen.

Vielen Dank, Sundareswaran Senthilvel

+0

Ein Teil des Problems kann darin liegen, wie Sie die Methode aufrufen, können Sie Code anzeigen, der versucht, die Methode von .Net aufzurufen. – morechilli

Antwort

1

Sie haben verschiedene Rückgabetypen, es erklärt wird void zurück, aber Sie importieren es mit bool.

+0

Ja, jetzt ist es korrigiert, bitte geben Sie mir eine Antwort für mein Problem. – Eshwar

Verwandte Themen