DLL2PAS-Tools

所属分类:Pascal/Delphi编程
开发工具:Delphi
文件大小:863KB
下载次数:81
上传日期:2016-06-24 18:27:09
上 传 者serialportzeng
说明:  一款带源码 的 由delphi开发的 DLL转pas源码小工具,
(DLL to PAS Tools DLLLoader und dll2pas stammen von Benjamin Rosseaux)

文件列表:
0setnil.txt (11038, 2016-06-24)
dll2pas.cfg (376, 2004-10-14)
dll2pas.dof (983, 2004-10-14)
dll2pas.dpr (7886, 2004-10-14)
dll2pas.exe (105472, 2004-11-06)
DLLLoader.dcu (25997, 2004-11-06)
DLLLoader.pas (34713, 2004-10-14)
DynNewton.pas (46047, 2004-10-13)
DynODE.pas (104317, 2004-10-12)
input.txt (35435, 2004-10-13)
Newton.dll (348160, 2004-05-24)
NEWTON.pas (1189020, 2004-10-13)
ode.dll (405504, 2004-05-29)
ODE.pas (1415103, 2004-10-13)
ODEImport.pas (69532, 2004-10-13)
shell.bat (7, 2004-10-14)
Static2DynDLL.cfg (426, 2004-10-13)
Static2DynDLL.dof (2338, 2004-10-13)
Static2DynDLL.dpr (1534, 2004-04-08)
Static2DynDLL.exe (44544, 2004-10-13)
0load.txt (17094, 2016-06-24)
0pointers.txt (22479, 2016-06-24)

==================================================================================== Die Methode DLLs zu linken, DLLLoader und dll2pas stammen von Benjamin Rosseaux (www.0ok.de, mailto:benjamin@0ok.de), der die ganze Denkarbeit geleistet hat. Die Zusammenstellung der Utilties, diese Dokumentation und die Anpassung der Tools an normale Delphistreams und die Umstellung auf eine einzige Ladebibliothek, die alles erledigt stammt von Martin Waldegger (www.basegraph.com, mailto:postmaster@basegraph.com). Die mitgelieferten BeispielDLLS und deren statische Importbibliotheken stammen von ode.org cambrianlabs.com/Mattias/DelphiODE, physicsengine.com geocities.com/delphinewton ==================================================================================== DLLs knnen mit folgenden Arbeitsschritten als Delphi Code statisch gebunden werden, falls bereits ein dynamischer Loader vorhanden ist. 1) Vorgehensweise Die DLL ins DLLTools Verzeichnis kopieren, und ein Commandprompt darin ffnen. Zu diesem Zweck kann auch einfach auf "shell.bat" doppelgeklickt werden. Ergebnis Die DLL liegt im DLLTools Verzeichnis und man kann über eine Shell damit herumfuhrwerken :^) 2) Vorgehensweise DLL2PAS mit dem Namen der DLL ohne extension aufrufen, Gro/Kleinschreibung so whlen, wie man es in der fertigen Unit haben mchte z.B. Beispiel dll2pas ODE Ergebnis Es entsteht eine Pascal Unit mit dem selben Namen wie die DLL 3) Vorgehensweise Den Interfaceteil des bereits vorliegenden dynamischen Loaders in den Interfaceteil der erstellten Unit kopieren, Smtliche Initialisierungs- und Finalisierungsroutinen weglassen, da unsere Unit das selbst machen wird. Ergebnis Wir haben eine halb fertige statische Importbibliothek für unsere DLL 4) Vorgehensweise Eventuell vorhandene "echte" Routinen aus dem dynamischen Loader in den Implementationsteil der erstellten Unit kopieren, die Ladesequenzen für die ganzen Funktionszeiger kommen in den Initialisierungsteil unserer Importbibliothek, nach dem DLLData.Free Kommando. Mittels Suchen / Ersetzen wird die ursprüngliche Laderoutine (GetModuleSymbol, GetProcedure, was auch immer) durch .DLL.FindExport ersetzt. Ergebnis Wir haben eine ganz fertige statische Importbibliothek für unsere DLL 5) Vorgehensweise Importbibliothek und DLLLoader.pas in ein Verzeichnis kopieren, in dem Delphi Projekte Bibliotheken suchen (oder ins Projektverzeichnis selbst) und Importbibliothek ein binden. Ergebnis Das wars, es muss keine DLL mehr geladen werden, da diese nun direkt ins Delphiprogramm gelinkt wird, Initialisierung und Finalisierung wird ebenfalls von unserer Importbibliothek übernommen - und es gibt nie mehr Versionsprobleme. ==================================================================================== Falls nur ein statische Loader vorhanden sein sollte, knnen auf folgende Weise Codeabschnitte zum dynamischen Laden von Funktionszeigern erstellt werden: Vorgehensweise Die Deklaration smtlicher Funktionen (und nur diese) wird in eine Datei namens "input.txt" im DLLTools Verzeichnis kopiert. Nun wird aus diesem Verzeichnis das Programm Static2DynDLL aufgerufen, es entstehen die Dateien 0pointers.txt, 0load.txt und 0setnil.txt aus denen nun recht einfach eine dynamische Importbibliothek zusammengesetzt werden kann. Zu beachten Falls eine Funktionsdeklaration über mehrere Zeilen hinweg gehen sollte, ist eventuell etwas Nachbearbeitung des generierten Source notwendig, da Static2DynDLL nicht besonders intelligent ist. Dies ist jedoch schnell getan

近期下载者

相关文件


收藏者