Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   JwaUnits unter FPC (https://www.delphipraxis.net/95856-jwaunits-unter-fpc.html)

Dezipaitor 16. Jul 2007 14:40

Re: JwaUnits unter FPC
 
Zitat:

Zitat von Bernhard Geyer
Zitat:

Zitat von Dezipaitor
Wenn FPC nur statisch laden kann, dann würde es bedeuten, dass FPC die jwaUnits nicht verwenden kann?

"Einfach" nur die Funktionen rausschmeißen (löschen) welche bei deiner Mindest-Windows-Version nicht vorhanden sind.

Das Problem liegt einfach darin, dass FPC einfach alle statisch verlinkte Funktionen (procedure myfunc; extern 'xy.dll') in der EXE aufführt, auch wenn diese nie verwendet werden. Delphi nimmt diese nicht mit rein.


Ich habe gesehn, dass Jwa die Funktionen auch dynamisch per GetProcAdress laden kann.
Die Direktive dafür ist "DYNAMIC_LINK".

Leider gibt es noch 3 Fehler in jwaWinBase und jwaWinType:

GetModuleHandle
LoadLibrary
GetProcAddress

Der Compiler meckert, dass diese Funktionen bereits mit denselben Parametern überladen wurden. Diese Funktionen sind in jwaWinBase und jwaWinType deklariert.
Kommentiert man diese durch {$IFNDEF DYNAMIC_LINK}...{$ENDIF} aus, so lässt es sich kompilieren.


Ich habe nun die Units unter FPC IDE und unter Lazarus kompiliert, wobei ich für Lazarus den neusten FPC verwendet habe.
Unter FPC Compilereinstellungen kann man die Kompilerdirektive DYNAMIC_LINK direkt setzen. Unter Lazarus muss man dazu einen Umweg machen,
da die Programmierer die direkte Eingabe für die Kompilerdirektiven in den Einstellungen vergessen haben (zumindest half Suchen nichts).
Also: Menü Projekt -> Compilereinstellungen -> Tab "Andere" -> Edit "Benutzerdefinierte Einstellungen" :
Zitat:

-dDYNAMIC_LINK
.
Mehrere Direktiven müssen jedesmal gesondert angegeben werden:
Zitat:

-dDYNAMIC_LINK -dTEST -dTEST2
Die JwaUnits erfordern kein Delphisyntax.

Robert Marquardt 16. Jul 2007 17:06

Re: JwaUnits unter FPC
 
Wenn die Funktionen in JwaWinType und JwaWinType vorhanden sind, dann sind sie auch in den Originalfiles von Windows. Da ist der C Compiler halt sehr viel nachgiebiger.
Vielleicht starten wir ja eine Wiederbelebung der Jedi-Apilib. Die letzte Aktion ist in die Hose gegangen. Wir wollten ein JwaWindows.pas machen, aber das includen und die IFDEFs dazu haben den Delphi-Compiler ueberfordert.

Dezipaitor 16. Jul 2007 18:01

Re: JwaUnits unter FPC
 
Zitat:

Zitat von Robert Marquardt
Wenn die Funktionen in JwaWinType und JwaWinType vorhanden sind, dann sind sie auch in den Originalfiles von Windows. Da ist der C Compiler halt sehr viel nachgiebiger.

Das verstehe ich nicht. Was hat der erste Satz mit dem zweiten zu tun?

Robert Marquardt 17. Jul 2007 05:12

Re: JwaUnits unter FPC
 
Dem C Compiler ist es weitgehend schnurz ob er eine Funktionsdeklaration einmal oder mehrmals bekommt. Solche Doppeldeklarationen kommen also gelegentlich vor. Winbase.h und WinType.h sind sowieso nicht wirklich eigenstaendig. Man benutzt sie durch windows.h. Delphi hat aber etwas gegen solche Doppeldeklarationen. Da ist die Sprache halt anders.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr.
Seite 2 von 2     12   

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