Include <iostream> sur NetBeans LINUX

Fermé
ABouras - 16 nov. 2012 à 11:22
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 16 nov. 2012 à 16:28
Bonjour,

Je compile le sdk 2.0 de ARDrone avec NetBeans sur LINUX. Je veux y inclure la gestion des ports série pour récupérer les coordonées GPS d'un module XBee. Pour cela, j'ai écris un programme qui fonctionne utilisant les fonctions de base open(...) et read(...) de iostream.h. Ce programme fonctionne avec le compilateur Monodevelop, mais quand je l'inclut dans le projet ARDrone sur NetBeans, la compilation donne :

erreur fatale: iostream : Aucun fichier ou dossier de ce type


qui fait référence à la ligne

#include <iostream>


J'ai testé en écriant <iostream.h> au lieu de <iostream>. J'ai vérifié que le fichier iostream existait dans le système et il y ait dans les chemins suivant :

/usr/include/c++/4.6
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/backward


Et j'ai rentré dans File/Project properties/Code assistance/C et C++ Compiler les chemins précédents, et aussi dans Tool/option/C-C++/Code assistance

Seulement, je ne sais pas vraiment quel chemin des trois est le plus adapté. Aussi, la bibliothèque ARDrone est écrite en C, et mon programme de gestion des ports séries est écrit en C++, y'a t-il un conflit ? Un compiler C++ sait compiler du C ?

Merci d'avance pour vos réponses !


A voir également:

4 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
16 nov. 2012 à 14:02
Salut.
un peu de mal à comprendre ce que tu fais.
C'est du C++ ? Tu parle de monodevelop, il n'y a aucun lien avec Mono et la plateforme .NET de Microsoft ?

Pour ce qui est de la compatibilité C/C++, la plupart du temps (mais pas toujours) un programme C compile en C++. Si tu veux en savoir plus la dessus, il y a une page internet bien faite.

Le problème c'est plus d'appeler une fonction C++ en C, car C++ décore les noms pour la surcharge.
Du coup, il faut modifier le programme C++, ou mettre les noms décorés en C (plutôt compliqué à faire). En C++, pour ne pas faire de décoration, il faut mettre extern "C" devant les fonctions.

Voilà quelques informations. N'hésite à demander des précisions.
0
ABouras Messages postés 26 Date d'inscription vendredi 16 novembre 2012 Statut Membre Dernière intervention 7 décembre 2012
Modifié par ABouras le 16/11/2012 à 14:20
Bonjour et merci pour ta réponse.

Oublie monoDevelop, c'était juste un IDE que j'avais choisi pour faire mes programmes test. Mais mon véritable IDE final est NetBeans. J'essaye d'inclure deux fichiers (serialib.cpp et serialib.h) dans le projet ARDrone 2.0 (qui se compile très bien tout seul).

Mon seul problème, c'est l'erreur lors de la compilation :
erreur fatale: iostream : Aucun fichier ou dossier de ce type


Quelle(s) piste(s) faut-il suivre pour corriger ce problème ?

PS : je bosse sur Linux (UBuntu) donc j'utilise pas .NET de Microsoft ...
0
ABouras Messages postés 26 Date d'inscription vendredi 16 novembre 2012 Statut Membre Dernière intervention 7 décembre 2012
16 nov. 2012 à 15:00
J'ai essayé en écrivant :

#ifdef _c
extern "Cpp"
{
	#endif
	#include <iostream>
	#ifdef
}
#endif _c


mais ça ne fonctionne toujours pas ...
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
16 nov. 2012 à 16:28
Je ne sais pas trop, essai des programmes simple en ligne de commande pour commencer.
extern "Cpp" n'existe pas. Seul extern "C" existe pour lui spécifier de ne pas décoré les fonctions lors de la compilation.
ça ressemble à un problème d'inclusion, donc d'option à passer à NetBean.
0