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.


Anmelden zum Antworten