J'ai récemment basculé un projet à utiliser des en-têtes précompilés car la compilation devenait lente. Avant de le faire, il a construit sans avertissements importants. Cependant, après avoir ajouté tous les en-têtes QT que j'utilise dans mon projet (dont j'utilise 40-50) au fichier stdafx.h
, lors de la construction de la solution, lorsque le fichier stdafx.h
est construit, je reçois un grand nombre (1000's) d'avertissement relatif aux fonctions QT. En particulier, je reçois beaucoup de "Attention C4251" par exemple.Grand nombre d'avertissements QT lors de l'utilisation d'une approche d'en-têtes précompilés
1> c: \ Qt \ 5.9 \ msvc2015_64 \ include \ QtGui/qrawfont.h (154): avertissement C4251: ':: QRawFont d': classe 'QExplicitlySharedDataPointer' doit avoir dll-interface pour être utilisé par les clients de la classe 'QRawFont' (compilation du fichier source TitleBar.cpp)
Les deux autres types d'avertissement courants (bien que beaucoup moins) sont c4800 et c4244. J'utilise QT 5.9 64 bits, sur une machine Windows 10 qui exécute VS2015.
Je peux évidemment simplement les désactiver, mais je n'aime pas vraiment faire une telle chose sans comprendre pourquoi cela se produit.
Il existe une discordance entre les définitions d'exportation et d'importation. Comme la classe en haut de l'article: https://wiki.qt.io/How_to_create_a_library_with_Qt_and_use_it_in_an_application Il doit fournir une définition d'exportation du côté de la bibliothèque dynamique et importer la définition du côté consommateur. – AlexanderVX
Mais je n'en ai aucun contrôle, car tout est interne à QT. – oracle3001
Je voudrais étudier à partir de TitleBar.cpp et comment exactement il inclut le type que vous voyez l'avertissement sur et pourquoi il y a une incompatibilité spécifique avec cet ensemble de définitions/options du compilateur. – AlexanderVX