Problème de passage de Qt 5 à Qt 6
mamiemando Messages postés 33539 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 février 2025 - 29 oct. 2024 à 13:10
- Problème de passage de Qt 5 à Qt 6
- Qt sdk - Télécharger - Langages
- Passage qwerty azerty - Guide
- Nero 6 - Télécharger - Gravure
- Télécharger le fichier de gta 5 - Forum jeux en ligne
- Fitbit charge 6 test - Accueil - Montres
5 réponses
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
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.
27 oct. 2024 à 16:32
Bonjour à tous,
J'ai essayé ce que vous m'avez proposé, mais je n'ai pas pu résoudre mon problème.
Pour expliquer la situation, mon programme fonctionnait très bien avec Qt 5.15.2 et la bibliothèque CURL. Cependant, lorsque j'ai tenté de passer à Qt 6.7.3, j'ai rencontré des erreurs. Pour les erreurs liées aux propriétés qui ont changé, c'est normal, mais je suis bloqué par un problème lié au type byte qui apparaît un peu partout. Le pire, c'est que plusieurs fichiers système déclenchent cette erreur.
Par exemple :
"C:\Qt\Tools\mingw1120_64\x86_64-w64-mingw32\include\rpcndr.h:398: erreur : reference to 'byte' is ambiguous
C:/Qt/Tools/mingw1120_64/x86_64-w64-mingw32/include/rpcndr.h:398:119: error: reference to 'byte' is ambiguous"
"C:\Qt\Tools\mingw1120_64\x86_64-w64-mingw32\include\objidlbase.h:1993: erreur : 'byte' has not been declared
In file included from C:/Qt/Tools/mingw1120_64/x86_64-w64-mingw32/include/combaseapi.h:155,
from C:/Qt/Tools/mingw1120_64/x86_64-w64-mingw32/include/objbase.h:14,
from C:/Qt/Tools/mingw1120_64/x86_64-w64-mingw32/include/ole2.h:17,
from C:/Qt/Tools/mingw1120_64/x86_64-w64-mingw32/include/wtypes.h:13,
from C:/Qt/Tools/mingw1120_64/x86_64-w64-mingw32/include/winscard.h:10,
from C:/Qt/Tools/mingw1120_64/x86_64-w64-mingw32/include/windows.h:97,
from C:/Qt/Tools/mingw1120_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/mingw1120_64/x86_64-w64-mingw32/include/objidlbase.h:1993:5: error: 'byte' has not been declared
et il y a une centaine d'erreur de ce genre.
Toutes les erreurs se produisent dans des fichiers système, et je n'ai défini aucune variable nommée byte dans mon programme. De plus, je n'utilise jamais std dans les headers.
Si vous avez des conseils pour installer correctement Qt, je suis preneur : je compte tout désinstaller et réinstaller pour m'assurer que le problème ne vient pas de là.
Je vous remercie d'avance.
Modifié le 28 oct. 2024 à 12:22
Bonjour,
Comme c'est très sale de modifier à la main les headers du "système" as-tu essayé de suivre un tutoriel (par exemple celui-ci) ?
Si on reste sur le compilateur actuel :
- Malheureusement, comme je travaille sous Linux, je n'ai pas le genre de problème que tu rencontres qui sont spécifiques à Windows.
- Charcuter les headers (comme on le fait) est assez sale et n'est pas garanti d'être couronné de succès (risque de dépendances circulaires, etc)
- Comme je l'ai dit plus haut, le problème vient du fait que le type "byte" est tantôt noté "BYTE" ou "byte" selon le compilateur. L'idée de ma première réponse était de définir ce type à l'endroit où tu en avais besoin. Mais dans tes derniers messages d'erreur, je vois dans tes messages d'erreurs que le type "byte" semble dans "rpcndr.h" ce qui engendre une définition ambigue. Donc plutôt que de déclarer le type nous même, on pourrait réutiliser celui déjà défini en le bout de code que je t'ai suggéré par :
#include <rpcndr.h>
Bonne chance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question28 oct. 2024 à 18:31
Merci de me répondre,
Je vais en premier lieu désinstaller et ré-installer Tout et ensuite je suivrai ta suggestion de redéfinir le byte, si l'erreur persiste.
Merci encore.
29 oct. 2024 à 13:10
C'est sans aucun doute la meilleure approche :-)