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.


Anmelden zum Antworten