Неразрешенный внешний в C-программе на Win 32 в Visual Studio 2008

StackOverflow https://stackoverflow.com/questions/1470986

Вопрос

Почему эта 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().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top