- 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
- Paris multiple 2/6 explication ✓ - Forum Loisirs / Divertissements
- Dans la table des matières du document à télécharger, le chapitre 6 et ses 2 sections n'apparaissent pas. trouvez l'erreur dans la structure du document et corrigez-la. mettez à jour la table des matières. quel est le mot formé par les lettres en majuscules de la table des matières après sa mise à jour ? - Forum Word
5 réponses
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
Bonjour,
Merci mamiemando pour ta réponse je vais tester ça ce week end et je te tiendrai au courant.
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.
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 question