2010-04-14 7 views
2

Je suis en train d'apprendre C et parce que VC++ 2008 ne supporte pas les fonctionnalités C99, je viens d'installer NetBeans et de le configurer pour fonctionner avec MinGW. Je peux compiler un projet de fichier unique (main.c) et utiliser le débogueur mais quand j'ajoute un nouveau fichier au projet j'obtiens une erreur "référence indéfinie à ... fonction (code) dans ce fichier ..". Évidemment, MinGW ne lie pas mes fichiers ou je ne sais pas comment les ajouter correctement à mon projet (les fichiers de bibliothèque standard fonctionnent bien).Problème lors de la compilation du projet C/C++ dans NetBeans 6.8 avec MinGW sous Windows

/bin/make -f nbproject/Makefile-Debug.mk SUBPROJECTS= .build-conf 
make[1]: Entering directory `/c/Users/don/Documents/NetBeansProjects/CppApplication_7' 
/bin/make -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/cppapplication_7.exe 
make[2]: Entering directory `/c/Users/don/Documents/NetBeansProjects/CppApplication_7' 
mkdir -p dist/Debug/MinGW-Windows 
gcc.exe  -o dist/Debug/MinGW-Windows/cppapplication_7 build/Debug/MinGW-Windows/main.o 
build/Debug/MinGW-Windows/main.o: In function `main': 
C:/Users/don/Documents/NetBeansProjects/CppApplication_7/main.c:5: undefined reference to `X' 
collect2: ld returned 1 exit status 
make[2]: *** [dist/Debug/MinGW-Windows/cppapplication_7.exe] Error 1 
make[2]: Leaving directory `/c/Users/don/Documents/NetBeansProjects/CppApplication_7' 
make[1]: *** [.build-conf] Error 2 
make[1]: Leaving directory `/c/Users/don/Documents/NetBeansProjects/CppApplication_7' 
make: *** [.build-impl] Error 2 
BUILD FAILED (exit value 2, total time: 1s) 

main.c

#include "header.h" 

int main(int argc, char** argv) 
{ 
    X(); 
    return (EXIT_SUCCESS); 
} 

header.h

#ifndef _HEADER_H 
#define _HEADER_H 
#include <stdio.h> 
#include <stdlib.h> 

void X(void); 

#endif 

source.c

#include "header.h" 
void X(void) 
{ 
    printf("dsfdas"); 
} 
+1

Nous avons besoin du message d'erreur exact et du code dont se plaint le compilateur avant que nous ayons beaucoup d'aide. Il est à noter que MinGW ne prend pas en charge plusieurs grandes parties de l'API Windows. C'est peut-être le problème que vous rencontrez. –

Répondre

0

J'ai trouvé ce qui n'allait pas. J'ajoutais des fichiers dans la vue physique pas pendant que je suis dans la vue logique.

+0

J'ai la même erreur, mais je n'ai pas compris votre solution, pouvez-vous expliquer plus s'il vous plaît. – Kamel

0

Essayez de changer le nom de votre garde comprennent

#ifndef _HEADER_H //These 
#define _HEADER_H 
#include <stdio.h> 
#include <stdlib.h> 

void X(void); 

#endif 

Les noms commençant par un trait de soulignement (_) sont réservés aux bibliothèques standard C et C++. Il est tout à fait possible que _HEADER_H soit déjà défini quelque part, ce qui rendrait main.c non compilable.

+0

Ce n'est pas le problème. Quand j'ai par exemple le fichier main.c et le fichier source.c, et j'inclus source.c dans main.c tout fonctionne. Mais quand j'ai main.c-> include-> header.h et source.c-> inclure header.h je reçois erreur "référence non définie à la fonction" X "" – dontoo

+0

évidemment je ne sais pas comment ajouter des fichiers correctement – dontoo

Questions connexes