Autor Beitrag
Tastaro
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 414
Erhaltene Danke: 23



BeitragVerfasst: Do 26.03.15 11:22 
Hallo,

ich muss in einem C#-Programm eine Win32-DLL (geschrieben in Delphi) einbinden.

Bei meiner Suche im Internet bin ich auf "DllImport" gestoßen. So weit, so gut. Aber wenn ich das richtig verstanden habe, dann bindet DllImport die DLL statisch ein.
Kann man Win32 DLLs auch dynamisch einbinden? Also so wie mit loadlibrary in Delphi? Falls ja: Wie?


Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Do 26.03.2015 um 11:35
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 26.03.15 11:44 
Zitat:
Kann man Win32 DLLs auch dynamisch einbinden? Also so wie mit loadlibrary in Delphi? Falls ja: Wie?

Na klar. LoadLibrary ist genauso ein Funktion aus einer Dll wie deine Delphi Dll. Also ist die Antwort die gleiche. Mache LoadLibrary per DllImport bekannt ;)
Dann hast du natürlich aber erst die Library und noch keine Funktion daraus. Dazu brauchst du dann noch einen DllImport von GetProcAddress.
Denn Pointer auf die Methode, denn du dann hast, kannst du dann über Marshal.GetDelegateForFunctionPointer auf einen passenden Delegaten mappen und über diesen aufrufen.


Edit: Ich hatte vor dem schreiben googeln sollen ;) Guckst du hier.

Für diesen Beitrag haben gedankt: Tastaro