2010-04-14 2 views
2

VC를 배우고 있는데 VC++ 2008에서 C99 기능을 지원하지 않기 때문에 방금 NetBeans를 설치하고 MinGW에서 작동하도록 구성했습니다. 나는 하나의 파일 프로젝트 (main.c)를 컴파일하고 디버거를 사용할 수 있지만 프로젝트에 새 파일을 추가 할 때 "정의되지 않은 참조가 ... 해당 파일의 함수 (코드)에 오류가 발생합니다.". 분명히 MinGW는 내 파일을 링크하지 않거나 제대로 프로젝트에 추가하지 못합니다 (C 표준 라이브러리 파일은 정상적으로 작동합니다).Windows에서 MinGW를 사용하여 NetBeans 6.8에서 C/C++ 프로젝트를 컴파일하는 데 문제가 있습니다.

/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

우리는 많은 도움이되기 전에 정확한 오류 메시지와 컴파일러가 불평하는 코드가 필요합니다. MinGW는 Windows API의 몇 가지 큰 부분에 대한 지원이 누락되었습니다. 아마도 그것이 당신이 겪고있는 문제 일 것입니다. –

답변

0

무엇이 잘못되었는지 발견했습니다. 논리적 인 관점에서 볼 때 물리적 뷰가 아닌 파일을 추가하고있었습니다.

+0

동일한 오류가 있지만 솔루션을 이해하지 못했습니다. 더 자세히 설명해주십시오. – Kamel

0

당신의 경비를 포함의 이름을 변경해보십시오

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

void X(void); 

#endif 

밑줄 (_)로 시작하는 이름은 C 및 C++ 표준 라이브러리에서 사용하도록 예약되어 있습니다. _HEADER_H가 이미 어딘가에 정의되어 있기 때문에 main.c이 컴파일되지 않을 수도 있습니다.

+0

그건 문제가되지 않습니다. 예를 들어 main.c 파일과 source.c 파일이 있고 main.c에 source.c를 포함하면 모든 것이 작동합니다. 하지만 main.c-> include-> header.h 및 source.c-> header.h를 포함 할 때 "함수 'X'에 대한 정의되지 않은 참조가 발생합니다. – dontoo

+0

분명히 파일을 올바르게 추가하는 방법을 모르겠습니다. – dontoo

관련 문제