C# Handle to C++ HWND



  • Hallo!
    Ich versuch in meinem C# Projekt eine C++ funktion aus einer dll aufzurufen.

    extern "C" __declspec(dllexport)void CreateOpenGLDevice(HWND hWnd)()
    

    Das is die funktion, die ich aufrufen will (Ich weiß, dass sie noch nix macht)

    In meinem c# wrapper hab ich dann folgenden code:

    [DllImport("OpenGLWindow.dll")]
            public static extern void CreateOpenGLDevice(IntPtr handle);
    

    und

    LEWrapper.LEWindow.CreateOpenGLDevice(this.Handle);
    

    Dann in meinem Haupt-Projekt (Is eine UserControl von WinForms)

    Wenn ich das jetzt starte kommt folgende fehlermeldung:

    Ein Aufruf an die PInvoke-Funktion
    "LEWrapper!LEWrapper.LEWindow::CreateOpenGLDevice" hat das Gleichgewicht des
    Stapels gestört. Wahrscheinlich stimmt die verwaltete PInvoke-Signatur nicht 
    mit der nicht verwalteten Zielsignatur überein. Überprüfen Sie, ob die 
    Aufrufkonvention und die Parameter der PInvoke-Signatur mit der nicht 
    verwalteten Zielsignatur übereinstimmen.
    

    Was mach ich falsch??



  • Ev. ist die Calling Convention falsch. Die kann über das DllImport Attribute gesteuert werden.



  • Danke!
    Das wars anscheinend 🙂


Anmelden zum Antworten