Wie cbuilder library .lib unter linux-c/c++-compiler nutzen?
-
Ich muss ein CPPBuilder-Programm mit einer DLL unter Windows nach Linux portieren. Das Hauptprogramm ist eine einfache Konsolen-Applikation, die Funktionen der DLL aufruft. Vom Hauptprogramm besitze ich den Source-Code, aber von der DLL habe ich nur das Header-File und ein compiliertes Objekt-File der Library mit Endung .lib, aber keinen Source-Code.
Nehme an, dass ich nicht mit dem GNU-Compiler bzw. Linker gcc die Library .lib an meine Applikation linken kann!
-
Rolf Fankhauser schrieb:
Nehme an, dass ich nicht mit dem GNU-Compiler bzw. Linker gcc die Library .lib an meine Applikation linken kann!
ich würde sagen, dass das so nicht geht, sonst könnest du alle windows dlls unter GNU/Linus kopieren und Windows Software laufen lassen. Und wenn deine DLL Abhängigkeiten von anderen DLLs hat, dann wird es schwer. Wenn du aber trotzdem testen willst:
1. DLL nach /usr/lib kopieren und ein Symlink setzen:
$ cd /usr/lib $ ln -s deinelib.dll libdeinelib.so
Dann mit -ldeinelib kinken. Hab sowas nie getan, denke ich aber, dass es schief geht.
-
Das schlägt definitiv fehl. .DLL-Dateien sind im Portable-Executeable Format (PE), wohingegen .SO-Dateien im ELF-Format sind. Außerdem sind die System-Calls von Windows und Linux komplett verschieden.
Eine realistische Möglischkeit wäre wine.
Alles andere wäre, solange du den Source-Code der .DLL nicht bekommst, meiner Meinung nach aussichtslos.
-
Ich denke auch, dass es ohne Source-Code nur mit Wine funktionieren könnte.
Unterdessen habe ich auch herausgefunden, dass die .lib-Datei nur vom CBuilder genutzt werden kann und unter Linux keinen Nutzen hat.
Leider ist die dll ziemlich hardware-nahe. Sie kommuniziert mit einer USB-Schnittstelle. Bin mal gespannt, ob dies mit Wine funktioniert.