managed dll ruft unmanaged function über pointer auf



  • Hallo,

    ich will dass ein unmanaged Programm über com ein delegate bzw einen funktions pointer bei meiner managed dll registrieren kann. Die Dll soll wiederum diese registrierte Funktion aufrufen können.

    Habe schon einige Ansätze versucht, aber es hat bisher nichts geklappt. Delegate und Funktionspointer scheinen nicht zusammenarbeiten zu können.

    Hatte vielleicht jemand schonmal dasselbe Problem und konnte es irgendwie lösen?


  • Administrator

    Zeig doch mal, was du schon versucht hast.

    Wenn ich von Problemen mit Funktionszeiger und Delegate höre, dann kommt mir als erstes das UnmanagedFunctionPointerAttribute in den Sinn. Es ist wichtig, dass man dort die CallingConvention definiert. Für normale C Funktionen wird Cdecl verwendet.
    Auch noch eine Trettmine in diesem Bereich ist, wenn man den managed Teil auf Any CPU gesetzt hat, der unmanaged Teil z.B. für x86 ist und das System x64. Dann treten gerne so schöne BadImageFormatException auf. Den managed Teil sollte man dann auf das Gleiche setzen, wofür auch der unmanaged Teil ist (also beides x86 oder beides x64).

    Vielleicht helfen dir diese Information schon weiter.

    Grüssli



  • Danke für die Informationen, auf diese Dinge hab ich noch garnicht geachtet. Aber gut zu wissen.
    Habe den Wald vor lauter Bäumen nicht gesehen: mit GetDelegateForFunctionPointer funktioniert es.


Anmelden zum Antworten