J'ai configuré CDT pour eclipse et j'ai écrit un programme simple hello world C:
#include <stdio.h>
int main(void){
puts("Hello, world.");
return 0;
}
Le programme se construit et s'exécute correctement, mais eclipse continue d'afficher ce point d'interrogation jaune à côté de l'instruction d'inclusion qui indique "Unresolved inclusion: <stdio.h>"
quand je place la souris dessus.
Cela n'affecte pas l'exécution du programme mais je trouve cela plutôt ennuyeux.
Quelqu'un at-il une idée de la façon de le supprimer?
c
eclipse
eclipse-cdt
standard-library
Derrick Zhang
la source
la source
Réponses:
Le compilateur utilisé par Eclipse est capable de résoudre les symboles très bien, de sorte que le code se compilera correctement.
Mais l'achèvement de code / indexeur ou le préprocesseur qu'utilise Eclipse ne sait pas où il
stdio.h
existe.Vous devez spécifier le chemin du système de fichiers où
stdio.h
se trouve.La documentation Eclipse décrit cela dans plusieurs sections pour le compilateur:
Et si l'achèvement de code / indexeur ou le préprocesseur ne peut pas non plus localiser
stdio.h
:L'emplacement exact de
stdio.h
dépendra du système pour lequel vous avez l'intention d'écrire le code. Si vous écrivez du code pour le même système sur lequel vous exécutez Eclipse, l'emplacement standard est/usr/include/stdio.h
pour Linux, macOS, Cygwin, etc.Si vous effectuez une compilation croisée pour un système cible séparé / distant (par exemple Android, Raspberry Pi, STM32), il se trouvera quelque part dans le SDK que vous avez installé pour ce système. Vous devrez vous référer à cette documentation SDK particulière.
la source
J'ai trouvé ces réponses (y compris celle acceptée) quelque peu énigmatique.
Pour moi, j'ai dû ajouter le chemin où se trouve stdio.h (comme @ardnew l'a dit). Dans Eclipse, vous ouvrez les Propriétés de votre projet, développez "C / C ++ General" et sélectionnez "Paths and Symbols".
Assurez-vous d'avoir ajouté le
include
répertoire de chaque langue que vous utilisez. (Dans mon cas, je devais simplement l'ajouter à GNU C ++.)la source
/usr/bin/xcode-select --install
, puis vous pourrez pointer Eclipse sur/usr/include/
en ajoutant simplement à la base de connaissances, je viens de le faire sur win7 avec cygwin.
c'est ce qui semble fonctionner pour moi.
inclure des chemins pour c:
inclure des chemins pour c ++:
cela me donne une compilation propre de bonjour le monde.
la source
Accédez à Projet> Propriétés> Général C / C ++> Le préprocesseur comprend> Fournisseurs et sélectionnez les deux:
Pour chacun de ceux-ci, sélectionnez également la sous-entrée: "Utiliser le fournisseur global partagé entre les projets".
Testé sur Eclipse 4.8.0 dans Ubuntu 16.04 avec un C et un C ++ hello world.
la source
Cela peut résoudre le problème. (Excusez-moi pour le mauvais anglais)
la source
J'utilise Eclipse avec Cygwin et cela a fonctionné pour moi:
Allez dans Projet> Propriétés> C / C ++ Général> Le préprocesseur inclut ...> Fournisseurs et sélectionnez "Paramètres du compilateur intégré CDT GCC Cygwin [Partagé]".
la source
Je travaille avec plusieurs configurations de compilateurs croisés , où je dois utiliser différents emplacements pour les fichiers d'en-tête STD (et d'autres variables d'environnement).
La solution était de configurer l'indexeur pour qu'il utilise la configuration active.
Malheureusement, en raison d'un bogue dans eclipse , l'option n'est pas stockée localement, vous devez donc utiliser la configuration de l' espace de travail si vous souhaitez enregistrer la configuration lorsque vous ouvrez à nouveau eclipse.
Fenêtre -> Préférences -> C / C ++ -> Indexeur -> Utiliser la configuration de construction active
Cela obligera eclipse à utiliser le bon compilateur défini avec la configuration Cross GCC active du projet.
la source
Comme le notent les principales réponses, il est nécessaire de spécifier où se trouvent les dossiers de construction, qui peuvent être ajoutés via une boîte de dialogue accessible en cliquant avec le bouton droit sur le projet et en sélectionnant Propriétés-> C / C ++ Général-> Chemins et symboles.
La question restante est de savoir quels chemins doivent être ajoutés.
Si vous avez configuré correctement gcc pour l'accès en ligne de commande et que vous avez besoin de savoir quels sont les chemins d'inclusion par défaut qu'il utilise, demandez-le simplement; selon la langue qui vous intéresse, utilisez:
... cela listera les paramètres par défaut du compilateur qui sont utilisés lors de l'appel de gcc (et cette commande fonctionne également si "gcc" est vraiment un alias pour clang, comme sur OSX).
Vers le bas se trouve la liste des répertoires d'inclusion:
Si vous entrez les répertoires répertoriés ici, dans l'ordre indiqué, dans la boîte de dialogue des chemins et symboles d'Eclipse, Eclipse CDT devrait être en mesure de trouver les en-têtes standard, et peut-être quelques en-têtes supplémentaires spécifiques à votre système d'exploitation.
(Merci à la réponse de devnull à une question connexe.)
la source
Dans ADT, j'ai fait ce qui suit:
la source
Normalement, Eclipse devrait être capable de résoudre automatiquement les fichiers d'inclusion standard. Il le fait en appelant gcc et en demandant sa configuration. Très probablement, Eclipse ne trouve pas votre gcc (ou du moins pas la version que vous utilisez pour la compilation).
Au lieu de spécifier tous les chemins d'inclusion standard dans les paramètres du projet, vous voudrez probablement vous assurer qu'Eclipse trouve gcc. Ajoutez le répertoire où se trouve gcc à la variable d'environnement PATH avant de démarrer Eclipse.
Si vous souhaitez que différents projets utilisent différents compilateurs, vous pouvez modifier les options de découverte. Ceux-ci sont masqués par défaut, alors activez-les d'abord depuis Fenêtre> Préférences> C / C ++> Paramètres des pages de propriétés> Afficher la page "Options de découverte". Ensuite, vous pouvez les trouver sous C / C ++ Build> Options de découverte dans les propriétés du projet.
la source
J'utilise l'IDE CodeWarrior basé sur eclipse pour les projets intégrés et je viens de résoudre ce problème en supprimant et en ajoutant à nouveau les adresses source aux propriétés du projet-> C / C ++ Général-> Chemin et Sybols-> Inclure les répertoires. Cela signifie qu'il y a beaucoup de raisons de prendre le message "Inclusion non résolue:" et qu'il y a aussi beaucoup de solution.
la source
Une erreur que j'ai eue lors de la configuration des chemins et des symboles est qu'au départ, j'ai configuré les chemins d'inclusion pour une langue différente. Je travaille avec CDT et Cygwin gnu C ++. Vous devez donc configurer les symboles et les chemins sous le langage GNU C ++.
la source
Également mis
${COMMAND}
àgcc
LinuxSous:
Remplacer:
avec:
Si vous ne le faites pas, le stdout Eclipse affiche:
et journaux sous
${HOME}/eclipse-workspace/.metadata/.log
show:car
${COMMAND} ${FLAGS}
sont vides, et donc Eclipse essaie d'exécuter le-E
suivant.Je me demande si nous pouvons bien définir le
COMMAND
etFLAGS
variables sur les paramètres, mais j'ai essayé de les ajouter en tant que variables de construction et cela n'a pas fonctionné.Version C ++ de la question: Comment résoudre "Inclusion non résolue: <iostream>" dans un fichier C ++ dans Eclipse CDT?
Testé sur Eclipse 2020-03 (4.15.0), Ubuntu 19.10 et ce projet Makefile minimal avec des sources existantes .
la source
Vérifiez-vous s'il est compilé à partir de la ligne de commande? Pour moi aide sur Linux, apt installe libc-dev.
la source