2009-09-24 2 views
0

Почему этот C-программа компиляции и то, что делает эти Err сообщения означают:неразрешенный внешний в C-программы на Win 32 в Visual Studio 2008

#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; 
} 

Err беспорядок: Ошибка 4 ошибки LNK2019: неразрешенный внешний символ _WinMain @ 16, указанный в функции ___tmainCRTStartup MSVCRTD.lib Ошибка 5 фатальная ошибка LNK1120: 1 неразрешенные внешние данные

ответ

1

Проверьте настройки компоновщика (Pproject Properties-> Linker-> System).

Свойство SubSystem должен быть установлен в КОНСОЛЬЮ

+0

Хорошо, спасибо! –

0

Вы собираете приложение Windows (win32), но имеют основную функцию() вместо WinMain().

Вы должны либо изменить тип своего проекта на какое-то консольное приложение (не помните точно, как это называется), либо прочитать о написании приложений Windows.

Проблема заключается в том, что приложения win32 используют WinMain() для своей основной функции и реализуют там цикл сообщений. Поэтому, когда вы пытаетесь скомпилировать приложение win32 без определения функции WinMain(), компилятор жалуется только на это. Подобное произойдет, если вы напишете консольное приложение и не будете предоставлять функцию main().

+0

Хорошо большое спасибо, хороший ответ! –