eclipse + cdt + mingw + windows error undefined ссылка на `WinMain @ 16 'при сборке

Я установил eclipse, cdt и mingw на свой компьютер с Windows XP. добавил C:\MinGW\bin в мой PATH.

Создал новый проект c ++ с одним файлом test.c. код в нем:

int main(){
   int i=1;
}

Пытаюсь построить, выдает ошибку: /mingw/lib/libmingw32.a(main.o):main.c:(.text+0xd2): undefined reference to 'WinMain@16'

Заметьте, он жалуется не на test.c, а скорее на main.c в одной из библиотек mingw.

Что я делаю неправильно?


person olamundo    schedule 16.07.2010    source источник
comment
У вас есть командная строка, которая используется для вызова компилятора? Кажется, ваша проблема связана с связыванием, а не с компиляцией. (Возможно, вам не хватает ссылки на libmsvcrt.a)   -  person Mark H    schedule 17.07.2010
comment
@Mark - спасибо, я не заметил, что команды компиляции и компоновки пытаются скомпилировать файл, отличный от того, который содержит основной   -  person olamundo    schedule 17.07.2010


Ответы (3)


Сначала вам нужно сохранить файл .c.

person Gregory    schedule 04.01.2012

ну, решение было действительно странным, но я думаю, оно будет иметь смысл для кого-то более опытного в CDT, чем я - мой main () находился внутри файла .c. Когда я изменил суффикс на .cpp, это сработало отлично.

person olamundo    schedule 17.07.2010
comment
Возможно, поскольку вы создали проект C ++, CDT не рассматривал его .c-файл. - person Adam Mitz; 17.07.2010
comment
Со мной произошло прямо противоположное: мой main () находился внутри файла .cpp, а проект был проектом C, поэтому CDT не рассматривал файл .cpp. - person FlorianT; 22.12.2015

Компоновщик не должен выполнять поиск main.o из libmingw32.a, потому что неопределенный символ _main из crt2.o удовлетворяется (должен) удовлетворяться написанным вами "int main ()".

Скопируйте и вставьте командные строки gcc, которые выполняет cdt.

person Adam Mitz    schedule 17.07.2010