2011-11-03 4 views
1

Lors de la programmation dans Code :: Blocks, il se compile bien pour C mais pas pour C++. Même pour un programme « Bonjour tout le monde »:Le programme C++ ne s'exécute pas dans Code :: Blocks

#include <iostream> 

using namespace std; 

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

donne ces erreurs:

-------------- Build: Debug in project --------------- 

    Compiling: main.cpp 
    Linking console executable: bin\Debug\project.exe 
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_throw.o):eh_throw.cc:(.text+0x7b): undefined reference to `__w32_sharedptr_unexpected' 
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_throw.o):eh_throw.cc:(.text+0x8c): undefined reference to `__w32_sharedptr_terminate' 
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x4e): undefined reference to `__w32_sharedptr' 
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0xb9): undefined reference to `__w32_sharedptr' 
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x179): undefined reference to `__w32_sharedptr' 
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x186): undefined reference to `__w32_sharedptr' 
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x1e3): undefined reference to `__w32_sharedptr' 
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x1ef): more undefined references to `__w32_sharedptr' follow 
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_terminate.o):eh_terminate.cc:(.text+0x67): undefined reference to `__w32_sharedptr_terminate' 
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_terminate.o):eh_terminate.cc:(.text+0x97): undefined reference to `__w32_sharedptr_unexpected' 
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_terminate.o):eh_terminate.cc:(.text+0xb3): undefined reference to `__w32_sharedptr_terminate' 
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_terminate.o):eh_terminate.cc:(.text+0xd3): undefined reference to `__w32_sharedptr_unexpected' 
    collect2: ld returned 1 exit status 
    Process terminated with status 1 (0 minutes, 1 seconds) 
    12 errors, 0 warnings 
+0

S'il vous plaît afficher le code que vous utilisez. –

+0

Veuillez poster un code source. –

+1

#include en utilisant l'espace de noms std; int main() { cout << "Bonjour tout le monde!" << endl; return 0; } –

Répondre

4

Les erreurs que vous obtenez indiquent que l'éditeur de liens est d'avoir du mal à localiser __w32_sharedptr qui est probablement une libstdc de dépendance ++ des besoins travailler.

Normalement, la bibliothèque standard et les dépendances dont elle a besoin sont automatiquement liées lorsque vous créez votre projet. Cependant, comme le commentaire de trojanfoe indique que ceci n'est vrai que si vous compilez avec g ++. Si vous créez du code C++ avec gcc, la bibliothèque standard C++ ne sera pas incluse automatiquement car le pilote gcc pense qu'il compile du code C.

Pour vérifier ce qui se passe réellement dans votre configuration de codeblocks aller à Réglages ->compilateur et Debugger ->paramètres globaux du compilateur (à gauche) -> sous executables Toolchain onglet. Vous devriez voir quelque chose de similaire à ceci:

enter image description here

Si votre configuration ressemble à droite, mais refuse toujours de construire correctement, activer la journalisation complète du compilateur et voir ce que les commandes sont effectivement invoquées par l'EDI. Vous pouvez trouver cela sous Paramètres du compilateur global ->Autres paramètres tab-> Compiler Log = Ligne de commande complète. Notez que vous devrez peut-être faire défiler un peu vers la droite pour trouver l'onglet.

Une fois la journalisation terminée, reconstruisez votre projet et mettez à jour votre question avec les commandes utilisées.

C'est à peu près ce que vous devriez voir dans la fenêtre du journal lorsque vous reconstruit avec les options ci-dessus activée:

enter image description here

+1

Ma mise en place ressemble à ce que vous avez guidé. Il a l'habitude de fonctionner, mais après avoir installé la bibliothèque SDL dans mon codeblock, le programme me donne ce genre de problème. Est-ce à cause de la bibliothèque SDL? –

+0

@PrajwalAcharya Avez-vous activé la journalisation complète dans ce cas? Que montre la fenêtre de journal lorsque vous essayez de créer? La ligne de commande complète utilisée pour générer s'affichera lorsque vous activez la journalisation complète. – greatwolf

+1

fenêtres de journal cette fois aussi montre même que ci-dessus .. ?? La réinstallation des blocs de code résoudra-t-elle cela? Je peux probablement réinstaller la bibliothèque SDL aussi .. !!! –

Questions connexes