Native Funktion mit managed Pointer aufrufen
-
Hallo Forum,
habe in einem Mixed-Mode Projekt die Aufgabe, einer nativen externen Funktion einer DLL einen Pointer zu einer managed Funktion zu übergeben.
Ich hab also eine Funktion, die Member von Form1 ist;private: int func(uint16 wert){ ... return 1; }
Dann habe ich einen Funktionsaufruf
nativeStruct.instance[param] = &func;
So kann es natürlich nicht funktionieren.
Ich folgendes versucht:int value = func(param); //Form1^ newPtr = gcnew Form1(); //newPtr->func(param); pin_ptr<int> pinPtr = &value; int* nativePtr = pinPtr;
oder
decltype (auto) fp = gcnew funcProc(this, &Form1::func); IntPtr delegatePointer = Marshal::GetFunctionPointerForDelegate(fp); nativeClass.instance[param] = reinterpret_cast<int(*)(uint16 param)>(delegatePointer.ToPointer());
Das kompiliert aber erzeugt den Fehler "Runtime Check Fehler #0" -> calling convention mismatch.
Irgendwie komme ich nicht weiter. Wer kann einen Tip geben?
M.