QT & Xerces



  • Hallo,

    ich habe versucht meinen bestehenden und laufenden Code von MFC in QT zu exportieren.

    Habe alle Einstellungen soweit abgeglichen. Erhalte nun jedoch folgende Linker-Fehler:

    Verknüpfen...
    XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport)public: static bool __cdecl xercesc_2_8::DOMImplementation::loadDOMExceptionMsg(enum xercesc_2_8::DOMException::ExceptionCode,unsigned short * const,unsigned int)" (__imp_?loadDOMExceptionMsg@DOMImplementation@xercesc_2_8@@SA_NW4ExceptionCode@DOMException@2@QAGI@Z)" in Funktion "__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".
    XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static unsigned short const * const xercesc_2_8::XMLUni::fgXercesUseCachedGrammarInParse" (__imp_?fgXercesUseCachedGrammarInParse@XMLUni@xercesc_2_8@@2QBGB)".
    XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static unsigned short const * const xercesc_2_8::XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation" (__imp_?fgXercesSchemaExternalNoNameSpaceSchemaLocation@XMLUni@xercesc_2_8@@2QBGB)".
    XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static unsigned short const * const xercesc_2_8::XMLUni::fgXercesSchemaFullChecking" (__imp_?fgXercesSchemaFullChecking@XMLUni@xercesc_2_8@@2QBGB)".
    XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static unsigned short const * const xercesc_2_8::XMLUni::fgXercesSchema" (__imp_?fgXercesSchema@XMLUni@xercesc_2_8@@2QBGB)".
    XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static unsigned short const * const xercesc_2_8::XMLUni::fgDOMValidation" (__imp_?fgDOMValidation@XMLUni@xercesc_2_8@@2QBGB)".
    XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static unsigned short const * const xercesc_2_8::XMLUni::fgDOMNamespaces" (__imp_?fgDOMNamespaces@XMLUni@xercesc_2_8@@2QBGB)".
    XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static class xercesc_2_8::DOMImplementation * __cdecl xercesc_2_8::DOMImplementationRegistry::getDOMImplementation(unsigned short const *)" (__imp_?getDOMImplementation@DOMImplementationRegistry@xercesc_2_8@@SAPAVDOMImplementation@2@PBG@Z)" in Funktion "__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".
    XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static unsigned short * __cdecl xercesc_2_8::XMLString::transcode(char const * const)" (__imp_?transcode@XMLString@xercesc_2_8@@SAPAGQBD@Z)" in Funktion "__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".
    XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static char * __cdecl xercesc_2_8::XMLString::transcode(unsigned short const * const)" (__imp_?transcode@XMLString@xercesc_2_8@@SAPADQBG@Z)" in Funktion "__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".
    XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: unsigned short const * __thiscall xercesc_2_8::XMLException::getMessage(void)const " (__imp_?getMessage@XMLException@xercesc_2_8@@QBEPBGXZ)" in Funktion "__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".
    XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static void __cdecl xercesc_2_8::XMLString::release(unsigned short * *)" (__imp_?release@XMLString@xercesc_2_8@@SAXPAPAG@Z)" in Funktion ""public: __thiscall XStr::~XStr(void)" (??1XStr@@QAE@XZ)".
    

    Woran kann das liegen? 😕


  • Mod

    Musst du wohl noch die "Xerces Lib" hinzu linken.



  • Hab ich gemacht - dasselbe Prinzip wie vorher auch in der MFC Variante - habe sowohl die statische als auch die dll-Version probiert - immer derselbe Fehler.

    Sämtliche Einstellungen im Projekt wurden kontrolliert - ich bin ehrlich gesagt ratlos 😕



  • Bin letzte Woche über das selbe Problem gestolpert.
    Falls das Problem also noch aktuell ist, versuche in deinem Projekt die Einstellung
    "wchar_t als integrierten Typ behandeln" auf "ja" zu setzen.
    Alle Funktionen die angemeckert werden haben einen wchar_t (unsignet short*) als Rückgabetyp bzw. als Parameter.



  • Das Problem ist das Qt standardmässig mit -Zc:wchar_t- compiliert wird. D.h. ein einfaches Umstellen auf 'wchar_t als integrierten Typ behandeln" auf "ja"' funktioniert unter Umständen nicht wirklich. Wenn dem so ist muss man entweder Qt ohne -Zc:wchar_t- kompilieren oder eben xerces mit dieser Option (und natürlich dein Programm ebenso)


Log in to reply