2010-04-25 7 views
2

J'utilise des bibliothèques cygwin pour exécuter des programmes C et C++ sous Windows.g ++ ne pas lier correctement les fichiers d'en-tête

gcc fonctionne bien, mais avec g++, j'obtiens une longue liste d'erreurs. Je pense que ces erreurs sont dues à des problèmes de liaison avec les bibliothèques C.

Pouvez-vous suggérer ce que je dois faire pour résoudre ce problème?


lignes d'erreur commençant:

In file included from testgpp.cpp:1: 
/cygdrive/c/cygwin/bin/../lib/gcc/i686-pc-cygwin/3.4.4/include/c++/cstdio:52:19: stdio.h: No such file or directory 
In file included from testgpp.cpp:1: 
/cygdrive/c/cygwin/bin/../lib/gcc/i686-pc-cygwin/3.4.4/include/c++/cstdio:99: error: `::FILE' has not been declared 
/cygdrive/c/cygwin/bin/../lib/gcc/i686-pc-cygwin/3.4.4/include/c++/cstdio:100: error: `::fpos_t' has not been declared 
/cygdrive/c/cygwin/bin/../lib/gcc/i686-pc-cygwin/3.4.4/include/c++/cstdio:102: error: `::clearerr' has not been declared 
/cygdrive/c/cygwin/bin/../lib/gcc/i686-pc-cygwin/3.4.4/include/c++/cstdio:103: error: `::fclose' has not been declared 
/cygdrive/c/cygwin/bin/../lib/gcc/i686-pc-cygwin/3.4.4/include/c++/cstdio:104: error: `::feof' has not been declared 

toute décharge d'erreur: PasteBin


pour les personnes demandant le code source: ce cela est clairement une lien du fichier en-tête problème et se produit avant même que la compilation ne commence. Je reçois la même erreur pour chaque fichier .cpp.

#include<cstdio> 
#include<cstdlib> 
#include<iostream> 
#include<vector> 
#include<queue> 
using namespace std; 

int main(){ 
    cout<<"hello world!";  
} 

me donne la même erreur.

+0

Quelle était la ligne de commande? –

+0

@Marcelo Cantos: 'g ++ testgpp.cpp' – Moeb

+0

Sans voir plus de détails, je ne peux pas vous donner une réponse, mais si vous incluez" windows.h "... il est connu d'interagir très mal avec Cygwin et peut parfois provoquer des erreurs similaires à ce qui précède. –

Répondre

1

L'erreur clé est:

In file included from testgpp.cpp:1: 
[...]/include/c++/cstdio:52:19: stdio.h: No such file or directory 

Le fait que G ++ se plaint qu'il ne peut pas trouver <stdio.h> (bien qu'il laisse les crochets hors du message) signifie que vous avez un problème de configuration du compilateur de quelque sorte. Probablement, vous manquez un paquet crucial. Je voudrais réinstaller ou mettre à jour votre environnement GCC, de sorte que <stdio.h> finit par être trouvé.

Le reste des problèmes sont des conséquences de l'en-tête manquant - le compilateur est en difficulté sans toutes les informations dont il a besoin pour éviter de générer des erreurs injustifiées.

Questions connexes