Sind '.dll bzw *.lib-Dateien linkerabhängig



  • Sehr geehrte Damen und Herren,

    ich möchte ein komplettes Projekt von VS Compiler(VC) auf GNU Compiler Collection (GCC) umzustellen(genauer genommen habe ich MinGW benutzt). Dabei ist mir aufgefallen, dass von VC compilierte und gelinkte Bibliotheken ich nicht in das Linken mit dem GCC einfügen konnte. Ich habe diese zwar als Argumente übergeben, bekam jedoch stets die Fehlermeldungen, dass die gesuchten Referenzen unbekannt sind.

    Meine Frage ist also, ob das generell so ist und auch bekannt ist oder ob ich einen Fehler beim Linken begehe.

    Mit freundlichen Grüßen

    m0zi



  • Ja, die sind nicht portabel zwischen Compilern. Selbst Compiler eines Herstellers, die in verschiedenen Versionen vorliegen, müssen nicht kompatibel sein. D.h. selbst bei einem Compiler-Upgrade muß man meistens schon die Libs mit dem Upgrade neu bauen.

    Wenn man vor hat zwischen verschiedenen Compilern zu entwickeln bzw. bauen, sollte man sich ein Build-Tool besorgen, das verschiedene Compiler unterstützt. Z.B. SCons oder bjam.



  • Vielen Dank für die Anwort.

    Sehr weit verbreitet scheint die genannte Software ja nicht zu sein oder bin ich da einfach nicht auf dem laufenden genug? Egal.



  • Stimmt so nicht ganz.

    Dlls können sehr wohl mit verschiedenen Compilern verwendet werden. Das sollte man aber schon beim Design der DLL wissen, da es einige Einschränkungen gibt:

    1. Du kannst nur POD verwenden
    2. Du kannst nur C Funktionen exportieren
    3. C++ "Klassen" kannst du über ein abstraktes Interface verwenden.

    Lektüre:
    http://www.codeproject.com/KB/cpp/howto_export_cpp_classes.aspx 🙂



  • Stelle dein Build-System auf die Autotools um und benutze zum Erstellen der Bibliotheken libtool, dann hast du keinen Ärger mehr, da für jede Plattform immer das richtige getan wird 🙂


Anmelden zum Antworten