Problème de passage de Qt 5 à Qt 6

Mourad2009B Messages postés 106 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 11 octobre 2024 - Modifié le 10 oct. 2024 à 14:30
Mourad2009B Messages postés 106 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 11 octobre 2024 - 11 oct. 2024 à 18:19

Bonjour à tous,


Je code en C++/Qt, et je viens de passer de Qt 5 à Qt 6. Hormis la panoplie d'erreurs que j'ai corrigé, j'ai une erreur que je ne comprends pas, et c'est la suivante :

C:\Qt\Tools\mingw1310_64\x86_64-w64-mingw32\include\objidlbase.h:2026: erreur : 'byte' has not been declared
In file included from C:/Qt/Tools/mingw1310_64/x86_64-w64-mingw32/include/combaseapi.h:155,
                 from C:/Qt/Tools/mingw1310_64/x86_64-w64-mingw32/include/objbase.h:14,
                 from C:/Qt/Tools/mingw1310_64/x86_64-w64-mingw32/include/ole2.h:17,
                 from C:/Qt/Tools/mingw1310_64/x86_64-w64-mingw32/include/wtypes.h:13,
                 from C:/Qt/Tools/mingw1310_64/x86_64-w64-mingw32/include/winscard.h:10,
                 from C:/Qt/Tools/mingw1310_64/x86_64-w64-mingw32/include/windows.h:97,
                 from C:/Qt/Tools/mingw1310_64/x86_64-w64-mingw32/include/winsock2.h:23,
                 from C:/Data/Fichiers_applications/C++/LibrairiesExternes/curl-8.8.0_1-win64-mingw/include/curl/curl.h:73,
                 from ..\..\Facturation\../Gestion/libcurlmodifiee.h:7,
                 from ..\..\Facturation\fen_de_facturation.h:51,
                 from ..\..\Facturation\fen_de_facturation.cpp:1:
C:/Qt/Tools/mingw1310_64/x86_64-w64-mingw32/include/objidlbase.h:2026:5: error: 'byte' has not been declared
 2026 |     byte *pv,
C:\Qt\Tools\mingw1310_64\x86_64-w64-mingw32\include\objidlbase.h:2026: erreur : reference to 'byte' is ambiguous
In file included from C:/Qt/Tools/mingw1310_64/x86_64-w64-mingw32/include/combaseapi.h:155,
                 from C:/Qt/Tools/mingw1310_64/x86_64-w64-mingw32/include/objbase.h:14,
                 from C:/Qt/Tools/mingw1310_64/x86_64-w64-mingw32/include/ole2.h:17,
                 from C:/Qt/Tools/mingw1310_64/x86_64-w64-mingw32/include/wtypes.h:13,
                 from C:/Qt/Tools/mingw1310_64/x86_64-w64-mingw32/include/winscard.h:10,
                 from C:/Qt/Tools/mingw1310_64/x86_64-w64-mingw32/include/windows.h:97,
                 from C:/Qt/Tools/mingw1310_64/x86_64-w64-mingw32/include/winsock2.h:23,
                 from C:/Data/Fichiers_applications/C++/LibrairiesExternes/curl-8.8.0_1-win64-mingw/include/curl/curl.h:73,
                 from ..\..\Facturation\../Gestion/libcurlmodifiee.h:7,
                 from ..\..\Facturation\fen_de_facturation.h:51,
                 from ..\..\Facturation\fen_de_facturation.cpp:1:
C:/Qt/Tools/mingw1310_64/x86_64-w64-mingw32/include/objidlbase.h:2026:5: error: reference to 'byte' is ambiguous
 2026 |     byte *pv,

Si quelqu'un peut m'aider SVP.
Merci d'avance à tous.

A voir également:

2 réponses

mamiemando Messages postés 33311 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 10 octobre 2024 7 794
10 oct. 2024 à 14:43

Bonjour,

Concernant la première erreur, est-ce qu'elle persiste avec un exemple, genre un hello world où tu inclues ce header et ou tu déclares une variable de type byte ? Si oui ça laisserait penser que le problème vient de ce qui installe objidlbase.h, donc je suppose mingw, qu'il faudrait alors tenter de réinstaller ou mettre à jour.

Pour vérifier, et en supposant que objidlbase.h soit dans un dossier d'includes standard, tu pourrais écrire quelque chose comme :

#include <objidlbase.h>

int main() {
    using namespace std;
    byte x = 7;
    cout << x << endl;
    return 0;
}

Concernant la 2e erreur, qui semble liée à la première, j'ai l'impression que c'est la même que dans cette discussion, ce qui laisse penser que tu fais un "using namespace std" à un mauvais endroit (typiquement dans un header). Il ne faut utiliser cette directive que dans des fichiers sources (ou dans les fonctions qui en as besoin comme dans l'exemple ci-dessus).

Une autre hypothèse concerne ton compilateur, qui peut comprendre soit le type BYTE, soit le type byte (voir cette discussion). Une solution "simple" mais un peu sale serait d'ajouter au début de ce header une définition du type byte. Sous Linux on écrirait par exemple :

#include <cstdint>

typedef uint8_t byte;

Bonne chance

0
Mourad2009B Messages postés 106 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 11 octobre 2024
Modifié le 11 oct. 2024 à 19:08

Bonjour,

Merci mamiemando pour ta réponse je vais tester ça ce week end et je te tiendrai au courant.

0