Проблемы с компиляцией проекта C / C ++ в NetBeans 6.8 с MinGW в Windows - PullRequest
2 голосов
/ 14 апреля 2010

Я изучаю C и, поскольку VC ++ 2008 не поддерживает функции C99, я только что установил NetBeans и настроил его для работы с MinGW. Я могу скомпилировать один файл проекта (main.c) и использовать отладчик, но когда я добавляю новый файл в проект, я получаю ошибку "неопределенная ссылка на ... функцию (код) в этом файле ..". Очевидно, что MinGW не связывает мои файлы, или я не знаю, как правильно добавить их в мой проект (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");
}

Ответы [ 2 ]

0 голосов
/ 14 апреля 2010

Я нашел, что было не так. Я добавлял файлы в физическом виде, а не в логическом.

0 голосов
/ 14 апреля 2010

Попробуйте изменить имя вашего охранника

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

void X(void);

#endif

Имена, начинающиеся с подчеркивания (_), зарезервированы для использования стандартными библиотеками C и C ++. Вполне возможно, что _HEADER_H уже определен где-то, что сделает main.c не скомпилированным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...