Bibliothek statisch linken??

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Bibliothek statisch linken??

Beitrag von PascalDragon »

cgaertner hat geschrieben:
Mi 21. Okt 2020, 22:22
Da der Hersteller den Sourcecode im SDK mitliefert und ich den mit Visual Studio 2017 erfolgreich kompilieren kann, kann ich ja die dll-Datei und die (für uns nutzlose) lib-Datei selbst erstellen. Dies erfolgt, indem ich in Visual Studio die Konfiguration "Dynamische Bibliothek (.dll)" auswähle. Jetzt kann ich aber dort auch alternativ die Konfiguration "Statische Bibliothek (.lib)" auswählen und dann wird nur eine lib-Datei erstellt, die aber mit 61 KB auch deutlich größer ist, als jene andere lib-Datei (11 KB).

Nützt diese lib-Datei etwas, entweder direkt für die Einbindung in Freepascal/Lazarus oder für die Konvertierung, die Du ja grundsätzlich als sinnvoll bezeichnet hast? Ich habe sie mal zur Sicherheit angehängt - sie trägt einen anderen Namen als die dll-Datei, aber das kommt vom Hersteller so.
Technisch gesehen wäre diese statische Bibliothek richtig ja, aber die konkrete iowkit Bibliothek ist nicht dafür gedacht statisch kompiliert zu werden, da sie - wie ich bereits erwähnt habe - den DLL Einsprungspunkt erwartet, damit sie korrekt aufräumen kann. Du müsstest wenn die DllEntry-Funktion auch noch manuell aufrufen, wenn sich dein Programm beendet. Und selbst dann kann es noch sein, dass du weitere Bibliotheken hinzu linken musst (also nicht wundern, wenn du weitere „Unresolved symbol” Fehler bekommst).

Mach dir das Leben nicht schwieriger als es ist und liefer einfach die Bibliothek mit. Oder packe die Bibliothek in eine Ressource, extrahiere sie zur Laufzeit in ein temporäres Verzeich und dann lade die Funktionen dynamisch. So weit ich gesehen habe hat die Delphi Unit bereits den passenden Code zumindest für das dynamische importieren.
FPC Compiler Entwickler

cgaertner
Beiträge: 27
Registriert: Sa 10. Okt 2020, 21:54

Re: Bibliothek statisch linken??

Beitrag von cgaertner »

PascalDragon hat geschrieben:
Do 22. Okt 2020, 09:51
Mach dir das Leben nicht schwieriger als es ist und liefer einfach die Bibliothek mit. Oder packe die Bibliothek in eine Ressource, extrahiere sie zur Laufzeit in ein temporäres Verzeich und dann lade die Funktionen dynamisch. So weit ich gesehen habe hat die Delphi Unit bereits den passenden Code zumindest für das dynamische importieren.
Hallo PascalDragon,

ich stimme Dir zu, das ist wohl die einfachste Lösung bzw. das mache ich ja mit der derzeitigen Programmversion ohnehin schon. Ich habe halt einfach gehofft, auch für Windows eine Lösung zu haben, die wirklich nur die ausführbare Datei benötigt und keine dll-Datei temporär irgendwohin schreiben muß (zumal ich den Eindruck habe, daß manche Virenscanner das skeptisch beurteilen).

Ich danke Dir für die ausführliche und geduldige Diskussion, aus der ich eine Menge neue Sachen gelernt habe!

Viele Grüße aus Wien,
Christian

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Bibliothek statisch linken??

Beitrag von af0815 »

Unter Windows erstelle ich keine dll mehr aus Resourcen, es wird bei gut konfigurierten Rechnern sowieso geblockt.
Ich mache jeztz immer saubere Installationspakete, das kann man auch sauber Scripten und bei Release ist das Ergebis eine fertige Installerdatei. Was anderes geht sowiso nicht mehr, wenn eine IT das installieren durchführt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten