Zitat von
Bernhard Geyer:
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.