Bibliothek iowkit mit Freepascal statisch linken

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
cgaertner
Posts: 12
Joined: Sun Mar 29, 2020 2:17 am

Bibliothek iowkit mit Freepascal statisch linken

Post by cgaertner »

Liebe Alle,

ich programmiere unter Windows mit Lazarus/Freepascal und kann problemlos auf einen IOWARRIOR zugreifen, indem ich die dynamische Bibliothek "iowkit.dll" verwende. Nun möchte ich die Bibliothek statisch in mein Programm verlinken. Unter Linux geht das, da ich die Bibliothek mit "make" selbst erstellen muß und dann auch gleich die passende *.a oder *.o Datei da (je nachdem, ob ich $LINK oder $LINKLIB verwende) ist.

Unter Windows brauche ich dazu offensichtlich eine *.lib-Datei. Jene, die im SDK dabei ist, ist scheinbar im falschen Format (aus Sicht von Freepascal). Ich habe probiert, Visual Studio zu installieren und die Bibliothek unter Windows selbst zu kompilieren, bin aber erwartungsgemäß gescheitert (ich bin in der C-Ecke absolut nicht zu Hause). Deshalb meine Fragen:

1) Hat schon wer hier die iowkit statisch mit Freepascal gelinkt?
2) Wenn ja, welche lib-Datei wurde verwendet?

Oder meine Bitte an die Entwickler, die ja eine komplett eingerichtete und perfekt konfigurierte Visual Studio Entwicklungsumgebung haben: könntet ihr mir die *.lib Datei bitte in einem Format zur Verfügung stellen, das Freepascal akzeptiert?

Danke und viele Grüße,
Christian
cgaertner
Posts: 12
Joined: Sun Mar 29, 2020 2:17 am

Re: Bibliothek iowkit mit Freepascal statisch linken

Post by cgaertner »

Liebe Alle,

ich habe zusätzliche Informationen von einem Freepascal-Profi erhalten: Freepascal benötigt *.lib-Dateien, die mit GCC/MinGW erstellt wurden und nicht mit MSVC (da gibt es kleine aber wichtige Unterschiede).

Ich habe mir gestern Nacht mal testweise Visual Studio 2017 installiert (mit dem scheint laut den Dateien aus dem SDK die iowkit.dll kompiliert worden zu sein) und zu meiner Überraschung hat es tatsächlich funktioniert, daß ich sowohl für 32 Bit als auch für 64 Bit die iowkit.dll aus dem Sourcecode im SDK neu übersetzen kann.

Angeblich könnte man "einfach" (Zitat Microsoft) in Visual Studio 2017 auch externe Linker einbinden (nämlich zum Beispiel GCC/MinGW), aber einfach ist halt ein dehnbarer Begriff - ich kriege das leider nicht hin. Ich nehme an, für euch C-Profis ist das vielleicht tatsächlich einfach? Vielleicht habt ihr ja auch schon GCC/MinGW mit Visual Studio konfiguriert und braucht nur mehr auf "Build" klicken ...

Danke und viele Grüße,
Christian
User avatar
Christoph Jung
Posts: 631
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Bibliothek iowkit mit Freepascal statisch linken

Post by Christoph Jung »

Ist das Problem jetzt gehoben, also wurde aus der .lib datei (im MS Format) in das Format für GCC convertiert?
GCC hat glaube ich einen Converter dafür. Laut Stackoverflow soll man das so umsetzten:

gendef mylib.dll
dlltool --as-flags=--64 -m i386:x86-64 -k --output-lib libmylib.a --input-def mylib.def

"gendef" wird glaube ich nur mit MinGW-w64 mitgeliefert und erstellt die .def Datei. Die sollte allerdings auch von Visual Studio erstellt werden.
Die sollte sich im Sourcen-Verzeichnis des IOWKIT befinden.

Anders herum, also von .a nach .ib liefert Microsoft ein passendes Tool mit.
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
cgaertner
Posts: 12
Joined: Sun Mar 29, 2020 2:17 am

Re: Bibliothek iowkit mit Freepascal statisch linken

Post by cgaertner »

Nein, das Problem ist lieder nicht behoben, denn die Konvertierung von der Bibliothek von MSVC nach GCC funktioniert nicht so wie gehofft. Ich habe die Datei mit gendef und dlltool umgewandelt und damit eine "iowkit.a" erhalten aber wenn ich diese Datei statisch mit dem Programm linke, braucht es immer noch die iowkit.dll.

Ja, Visual Studio hat auch eine *.def-Datei mit dabei, allerdings ist die vom Mai 2008, während die neueste Version der Bibliothek im SDK vom März 2019 ist. Aber auch mit der Datei brauche ich nach wie vor die dll-Datei - es wird also doch nicht statisch gelinkt.

Viele Grüße,
Christian
Post Reply