![]() |
Funktionen aus .NET4-DLL in Delphi 5 aufrufen
Hallo zusammen,
ich habe ein großes Projekt in Delphi 5 und muss über eine .NET-Klasse auf eine andere Anwendung zugreifen. Da ich das Projekt unmöglich auf eine höhere Delphi-Version hochziehen kann, war meine Idee, mit Visual Studio eine Klassenbibliothek auf .NET4 zu erstellen und die Funktionen in Delphi aus der DLL zu starten. Für einen ersten Test habe ich eine neue Klassenbibliothek mit C# erstellt und den Aufruf einer einfachen Prozedur in Visual Studio erfolgreich getestet. Dann habe ich den Aufruf der DLL in Delphi 5 so versucht:
Delphi-Quellcode:
Das Handle bekomme ich noch ordnungsgemäß, aber dann ist t_dllfunction nach dem GetProcAddress() immer "nil".
procedure ...
var t_dllhandle: THandle; t_dllfunction: TFarProc; t_procedure: TdoHelloMsg; begin ... t_dllhandle:=LoadLibrary(PChar(g_testdll)); t_dllfunction:=GetProcAddress(t_dllhandle, 'doHelloMsg'); ... Nun meine Frage: Kann ich eine .NET-DLL überhaupt einfach so in Delphi 5 ansprechen? Hat jemand evtl. eine andere Idee, ein Stück .NET4 in Delphi 5 ohne dieses COM-Interop zu starten? Ich muss hier keine Daten austauschen, es geht nur um den Prozeduraufruf, um irgendwelche Aktionen in der .NET-Klasse auszulösen. Vielen Dank, Christian |
AW: Funktionen aus .NET4-DLL in Delphi 5 aufrufen
Du hast mehrere Möglichkeiten, die aber immer auf eines dieser beiden herauslaufen: COM oder Reverse P/Invoke.
COM ist definitiv zu bevorzugen, da es die Sache ungeheuer einfach macht. Reverse P/Invoke ist nicht wirklich schön. Die nötigen Informationen sollten ![]() |
AW: Funktionen aus .NET4-DLL in Delphi 5 aufrufen
Zitat:
Vor allem muss man mit SxS zusammen mit .Net aufpassen. (Bis vor XP SP2 gab das sogar reproduzierbar einen Bluescreen!) Wenn man aber Funktionen aus .Net Assemblies exportiert, und dabei COM-kompatible Interfaces nutzt, kann man weiterhin schön OO programmieren und (s)eine native App ohne viel Setup und Abhängigkeit mit .Net features versehen. Zitat:
Ich habe ein ![]() |
AW: Funktionen aus .NET4-DLL in Delphi 5 aufrufen
Guten Morgen,
vielen Dank für das Template, habe ich gleich ausprobiert. Allerdings funktioniert der Build nicht, weil die LIB.EXE nicht gefunden wird. Kann es sein, dass das Template unter Visual C# 2010 EXPRESS nicht funktioniert? Welche Version würde ich denn benötigen? Vielen Dank, Christian |
AW: Funktionen aus .NET4-DLL in Delphi 5 aufrufen
Lib.exe ist ein Tool, welches .lib files für C++ erzeugt. (Das wollten einige User haben)
Ich breche meinen Task dummerweise ab, wenn ich aus VisualStudio gestartet werde, aber es kein Lib.exe gibt. Eine einfache Lösung ist es vorerst eine leere Consolen App als Lib.exe an den Platz zu packen, über den er meckert. (Sollte dein VS Express Ordner sein und darin VC\bin\Lib.exe) Kurzversion: - Das tritt nur bei Express-Editionen auf, bzw wenn kein C++ da ist. - Du kannst in deinem VS Order eine leere Consoleapp namens Lib.exe in den Ordner VC\bin packen Mit leere Console app meine ich sowas:
Delphi-Quellcode:
program Lib;
{$APPTYPE CONSOLE} begin end. Heute abend schaue ich es mir an und muss dann wohl eine neue Version veröffentlichen. (Mal schauen, ob die angestaubte Windows VM zu Hause noch funktioniert *g*) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz