Hello,
Je cherche à avoir quelques infos sur les commandes préprocesseurs Qt suivantes:
- QT_LARGEFILE_SUPPORT
- QT_THREAD_SUPPORT
- QT_CORE_LIB
- QT_GUI_LIB
- QT_DLL
Je n'ai rien trouvé dans la doc officielle et encore moins une liste exhaustive.
Mon problème est le suivant:
Je dérive un composant Qt dans une de mes DLL. Cela fait intervenir les commandes dllimport et dllexport.
La DLL compile bien mais quand je compile autres projets dépendants, j'ai des erreurs de link (dllimport). Je fais attention d'utiliser les même commandes préprocesseurs au cours du moc'ing du fichier .h contenant mon objet Qt que dans les paramètres Visual Studio.
Certaines sont liées à Qt
et d'autre à mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 error LNK2019: symbole externe non résolu "__declspec(dllimport) public: class QString __thiscall QMetaObject::tr(char const *,char const *)const " (__imp_?tr@QMetaObject@@QBE?AVQString@@PBD0@Z) référencé dans la fonction "public: static class QString __cdecl MyClass::tr(char const *,char const *)" (?tr@MyClass@@SA?AVQString@@PBD0@Z) error LNK2001: symbole externe non résolu "public: static struct QMetaObject const MyClass::staticMetaObject" (?staticMetaObject@MyClass@@2UQMetaObject@@B) error LNK2019: symbole externe non résolu "__declspec(dllimport) public: class QString __thiscall QMetaObject::trUtf8(char const *,char const *)const " (__imp_?trUtf8@QMetaObject@@QBE?AVQString@@PBD0@Z) référencé dans la fonction "public: static class QString __cdecl MyClass::trUtf8(char const *,char const *)" (?trUtf8@MyClass@@SA?AVQString@@PBD0@Z) error LNK2019: symbole externe non résolu "__declspec(dllimport) public: class QString __thiscall QMetaObject::tr(char const *,char const *,int)const " (__imp_?tr@QMetaObject@@QBE?AVQString@@PBD0H@Z) référencé dans la fonction "public: static class QString __cdecl MyClass::tr(char const *,char const *,int)" (?tr@MyClass@@SA?AVQString@@PBD0H@Z) error LNK2019: symbole externe non résolu "__declspec(dllimport) public: class QString __thiscall QMetaObject::trUtf8(char const *,char const *,int)const " (__imp_?trUtf8@QMetaObject@@QBE?AVQString@@PBD0H@Z) référencé dans la fonction "public: static class QString __cdecl MyClass::trUtf8(char const *,char const *,int)" (?trUtf8@MyClass@@SA?AVQString@@PBD0H@Z)
Sachant que si je ne dérive pas de l'objet Qt, je n'ai pas l'erreur de link sur le membre static "_columnCount" de ma classe. Je suppose qu'il manque une option lors du moc'ing du fichier .h qui cause ce problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 error LNK2001: symbole externe non résolu "private: static class std::vector<class MyClass *,class std::allocator<class MyClass *> > MyClass::_MyClassList" (?_ScriptableList@MyClass@@0V?$vector@PAVMyClass@@V?$allocator@PAVMyClass@@@std@@@std@@A) error LNK2001: symbole externe non résolu "private: static int const MyClass::_columnCount" (?_columnCount@MyClass@@0HB)
Avez-vous des pistes ??
Partager