Code::Blocks/MinGW mit libxml2 "multiple definition"-Fehler



  • Hallo

    Seid 2 Tagen ärger ich mich mit meinen Compiler rum und komm nicht weiter. Ich bekomme immer wieder die Fehlermeldung "multiple definition of 'xmlMalloc'. Zur einfachheithalber hab ich nur noch die Main drin, und 2 "fast leere" klassen mit h/cpp-Datei.

    Übersetzten kann ich es sobald ich aus einer der Klassen-cpp-Datei diese Zeile:

    #include <libxml/parser.h>
    

    entferne dann kann es wieder übersetzen ansonst nicht und es kommen diese Fehlermeldung:

    obj\Debug\Common\XmlNode.o||In function `ZSt17__verify_groupingPKcjRKSs':|
    D:\Programme\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\bits\locale_facets.tcc|2497|multiple definition of `forbiddenExp'|
    obj\Debug\Common\XmlDocument.o:F:\Data\C++\NetCrossOS\Common\XmlDocument.cpp|13|first defined here|
    obj\Debug\Common\XmlNode.o||In function `ZSt17__verify_groupingPKcjRKSs':|
    D:\Programme\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\bits\locale_facets.tcc|2497|multiple definition of `emptyExp'|
    obj\Debug\Common\XmlDocument.o:F:\Data\C++\NetCrossOS\Common\XmlDocument.cpp|13|first defined here|
    obj\Debug\Common\XmlNode.o||In function `ZSt17__verify_groupingPKcjRKSs':|
    D:\Programme\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\bits\locale_facets.tcc|2498|multiple definition of `xmlMalloc'|
    obj\Debug\Common\XmlDocument.o:F:\Data\C++\NetCrossOS\Common\XmlDocument.cpp|13|first defined here|
    obj\Debug\Common\XmlNode.o||In function `ZSt17__verify_groupingPKcjRKSs':|
    D:\Programme\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\bits\locale_facets.tcc|2498|multiple definition of `xmlMallocAtomic'|
    obj\Debug\Common\XmlDocument.o:F:\Data\C++\NetCrossOS\Common\XmlDocument.cpp|14|first defined here|
    obj\Debug\Common\XmlNode.o||In function `ZSt17__verify_groupingPKcjRKSs':|
    D:\Programme\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\bits\locale_facets.tcc|2498|multiple definition of `xmlRealloc'|
    obj\Debug\Common\XmlDocument.o:F:\Data\C++\NetCrossOS\Common\XmlDocument.cpp|14|first defined here|
    obj\Debug\Common\XmlNode.o||In function `ZSt17__verify_groupingPKcjRKSs':|
    D:\Programme\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\bits\locale_facets.tcc|2498|multiple definition of `xmlFree'|
    obj\Debug\Common\XmlDocument.o:F:\Data\C++\NetCrossOS\Common\XmlDocument.cpp|14|first defined here|
    obj\Debug\Common\XmlNode.o||In function `ZSt17__verify_groupingPKcjRKSs':|
    D:\Programme\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\bits\locale_facets.tcc|2499|multiple definition of `xmlMemStrdup'|
    obj\Debug\Common\XmlDocument.o:F:\Data\C++\NetCrossOS\Common\XmlDocument.cpp|13|first defined here|
    ||=== Build finished: 14 errors, 0 warnings ===|
    

    Ich hab schon bei Google und sonstiges gesucht aber des einzige was ich verstanden hab war das es vllt irgendwas mit monolithic-build zu tun hatte aber sicher bin ich mir gar nicht.

    PS: die libxml2 hab ich nicht selber übersetzt sondern im fertigen heruntergeladen also keine ahnung wie die gebaut wurde aber sollte der mingw gewesen.

    Vielen Dank für eure Hilfe
    Marco



  • Hallo

    So nach noch längerem Suchen und unterhalten mit nen Arbeitskollegen hab ich den Fehler gefunden. Und zwar war dieser in der "libxml/xmlexports.h"-Datei zu finden und zwar in Zeile 116. Da fand man diese Zeilen:

    ...
      #if !defined(LIBXML_STATIC)
        #define XMLPUBFUN __declspec(dllexport)
        #define XMLPUBVAR __declspec(dllexport)
    ...
    

    diese hab ich dann dahin gehändert, da dies bei den anderen Sektion (zB: __BORLANDC__ oder _MSC_VER) auch so ist:

    ...
      #if defined(IN_LIBXML) && !defined(LIBXML_STATIC)
        #define XMLPUBFUN __declspec(dllexport)
        #define XMLPUBVAR __declspec(dllexport)
    ...
    

    Dann funktioniert das übersetzten wieder ohne Probleme.

    Mfg Marco

    Hoffe ich konnte wenigstens anderen mit den selben Fehler helfen.



  • Ja, das hat mir viel geholfen. Herzlichen Dank!



  • That solved my problem compiling a GStreamer based application in windows with qtcreator/mingw32 (using ossbuild GStreamer-SDK).
    Vielen dank!


Anmelden zum Antworten