Неразрешенный внешний в C-программе на Win 32 в Visual Studio 2008
-
16-09-2019 - |
Вопрос
Почему эта C-программа не компилируется и что означают сообщения об ошибке:
#include <stdio.h>
int main() {
char op = ' ';
char cont = ' ';
int tal1 = 0;
int tal2 = 0;
int result;
int ok = 1;
printf("Welcome\n");
do {
printf("Which one (+ - * /)? ");
scanf("%c", &op); fflush(stdin);
printf("Number?: ");
scanf("%d", &tal1); fflush(stdin);
printf("Number: ");
scanf("%d", &tal2); fflush(stdin);
ok=1;
switch(op){
case '+':
result=tal1+tal2;
break;
case '-':
result=tal1-tal2;
break;
case '*':
result=tal1*tal2;
break;
case '/':
result=tal1/tal2;
break;
default:
printf("Wrong\n");
ok=0;
break;
}
if(ok)
printf("Answer: %d\n", result);
printf("Continue? (j/n)"); fflush(stdin);
}while (cont == 'j');
printf("Thanks!\n");
return 0;
}
Ошибочный беспорядок:Ошибка 4 ошибка LNK2019:неразрешенный внешний символ _WinMain @16, на который ссылается функция ___tmainCRTStartup MSVCRTD.lib Ошибка 5 неустранимая ошибка LNK1120:1 неразрешенные внешние факторы
Решение
Проверьте настройки компоновщика (Свойства Pproject-> Компоновщик-> Система).
Свойство SubSystem должно быть установлено в значение КОНСОЛЬ
Другие советы
Вы компилируете приложение для Windows (win32), но используете функцию main() вместо WinMain().
Вам следует либо изменить тип вашего проекта на какое-нибудь консольное приложение (не помню точно, как это называется), либо прочитать о написании приложений для Windows.
Проблема в том, что приложения win32 используют WinMain() для своей основной функции и реализуют там цикл обмена сообщениями.Поэтому, когда вы пытаетесь скомпилировать приложение win32 без определения функции WinMain(), компилятор жалуется именно на это.Аналогичная вещь произошла бы, если бы вы написали консольное приложение и не предоставляли функцию main().