DLL-Erstellung mit Free-Pascal

13/09/2007 - 10:20 von Winfried Wolf | Report spam
hallo,
ich habe vor, für die Benutzung aus einer in Visual-Foxpro
programmierten Anwendung laufzeit-kritische Prozeduren in eine externe
32-Bit-DLL zu packen.
Klar, das geht mit Delphi. Geht sowas auch mit Free-Pascal?
Ich hab das Ding gestern mal versuchsweise installiert, aber mir ist
schleierhaft, was ich da tun müsste. Im Index der dazu installierten
Hilfe taucht DLL überhaupt nicht auf.
Gebraucht wird nur das Gerüst, um 32-Bit DLLs in Pascal (und
Inline-Assembler) erstellen zu können sowie das Interface zu den
üblichen Windows-DLLs (KERNEL32, USER32, GDI32).

machbar?

Gruß,
WiWo.
 

Lesen sie die antworten

#1 Markus Wichmann
13/09/2007 - 17:16 | Warnen spam
Winfried Wolf wrote:
hallo,
ich habe vor, für die Benutzung aus einer in Visual-Foxpro
programmierten Anwendung laufzeit-kritische Prozeduren in eine externe
32-Bit-DLL zu packen.
Klar, das geht mit Delphi. Geht sowas auch mit Free-Pascal?



Ja, das geht. Du musst nur als erstes Schlüsselwort nicht 'program'
sondern 'library' eintragen, und die zu exportierenden Funktionen im
entsprechenden Teil deklarieren:

library hello;

function hw:pchar;
begin
hw := 'Hello, World!';
end;

procedure hw2;
begin
writeln(hw);
end;

exports hw, hw2;

begin
{Hier könnte man Initialisierungsarbeiten durchführen. Wenn man das
nicht braucht, das begin weglassen.}
end.


Ich hab das Ding gestern mal versuchsweise installiert, aber mir ist
schleierhaft, was ich da tun müsste. Im Index der dazu installierten
Hilfe taucht DLL überhaupt nicht auf.



Weil DLL Windows-spezifisch, FreePascal aber weitestgehend
platformunabhàngig ist. Guck mal nach 'Shared Library'.

Gebraucht wird nur das Gerüst, um 32-Bit DLLs in Pascal (und
Inline-Assembler) erstellen zu können sowie das Interface zu den
üblichen Windows-DLLs (KERNEL32, USER32, GDI32).




Siehe unit windows.

machbar?




Wie du siehst. Die windows-Unit ist übrigens nur durch das msdn
dokumentiert. Die Unterschiede, die ich bisher herausfand: Es gibt kein
hwnd (braucht man ja auch nicht, handle tut ja auch), und der Typ SOCKET
heißt TSocket.

Gruß,
WiWo.



HTH,
Markus
Was haben eigentlich alle gegen Beamte? Die tun doch nichts!

Ähnliche fragen