Erreur de Compilation C++

LeNulDeC++ -  
mamiemando Messages postés 33774 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
Bonjour,
Voulant m'essayer à la programmation, j'ai pris le livre C++ Pour les Nuls et j'ai téléchargé Dev-C++. J'ai entré le script ecrit dans le livre comme indiqué, je compile et voilà ce qu'il me dit :
Compilateur: Default compiler
Exécution de g++.exe...
g++.exe "D:\Users\Thomas Kowalski\Documents\C++\Températures\Coversion de Températures Livre.cpp" -o "D:\Users\Thomas Kowalski\Documents\C++\Températures\Coversion de Températures Livre.exe" -fexceptions -fverbose-asm -g3 -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib" -lobjc -g3
In file included from C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31,
from D:\Users\Thomas Kowalski\Documents\C++\Températures\Coversion de Températures Livre.cpp:8:
C:/Dev-Cpp/include/c++/3.4.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.

C:\Dev-Cpp\Bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -lobjc
collect2: ld returned 1 exit status

Exécution terminée
Et ca ne marche pas, bien sur. Aidez moi ! S'il vous plaît !


3 réponses

francis
 
Salut,
c'est l'option -lobjc qui n'est pas trouvée, c'est relatif a de l'objective C, t'es sur que t'en a besoin ?

compile en enlevant l'option pour voir
0
mamiemando Messages postés 33774 Date d'inscription   Statut Modérateur Dernière intervention   7 883
 
Ton compilateur dit que tu utilises un header qui marche mais qui est obsolète. C'est celui que tu inclues dans Livre.cpp à la ligne 8).

Comme le signale Char Sniper les headers standards C++ n'ont plus d'extenstion (<iostream> et non <iostream.h>). Ceci dit, les headers C++ ont généralement une extension, par fois ".h" (comme dans la librairie Qt) et parfois ".hpp" (comme dans la librairie boost). En toute rigueur on devrait utiliser ".hpp" pour différencier les headers C et C++.

On peut vérifier que ce warning à la compilation est levé par C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h à la ligne 31 qui invoque le warning écrit dans C:/Dev-Cpp/include/c++/3.4.2/backward/backward_warning.h qui écrit le warning (ligne 32). Et il a le bon goût de te dire d'écrire <iostream> au lieu de <iostream.h>

La nuance, c'est que toutes les classes standards sont désormais dans le namespace std. Ainsi on écrira typiquement :

#include <iostream>

int main(){
  std::cout << "coucou !" << std::endl;
  return 0;
}


On peut également sous-entendre le std:: en utilisant la directive "using namepsace std;" mais attention ceci ne doit jamais être fait dans un header (.hpp). Là, on est dans un fichier source (.cpp) donc tout va bien :

#include <iostream>

using namespace std;

int main(){
  cout << "coucou !" << endl;
  return 0;
}


Bonne chance
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Je rajouterai que si ton livre te dit d'écrire <iostream.h>, changes en. Soit il est trop vieux (donc tu peux à la rigueur le conserver un peu), soit il n'est pas très sérieux.
-1
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
tu aurais pu lui dire quoi mettre à la place :P

c'est #include <iostream>

(en général les "headers" à inclure qui viennent du standard c++ n'on pas de ".h" à la fin. ça c'était plutot en C et au début du C++.
0