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
近期下载者:
相关文件:
收藏者: