在 Visual Studio 2008 的 Win 32 上的 C 程序中无法解析的外部

Unresolved external in C-program on Win 32 in Visual Studio 2008

提问人:Chris_45 提问时间:9/24/2009 更新时间:9/24/2009 访问量:536

问:

为什么这个 C 程序不编译,err 消息是什么意思:

#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:MSVCRTD.lib 函数中引用了未解析的外部符号_WinMain@16___tmainCRTStartup 错误 5 致命错误 LNK1120:1 个未解决的外部问题

visual-studio-2008 未解析的外部

评论


答:

1赞 Frank Bollack 9/24/2009 #1

检查链接器设置 (Pproject Properties->Linker->System)。

SubSystem 属性应设置为 CONSOLE

0赞 inkredibl 9/24/2009 #2

您正在编译 Windows (win32) 应用程序,但具有 main() 函数而不是 WinMain()。

您应该将项目的类型更改为某种控制台应用程序(不记得它是如何调用的),或者阅读有关编写 Windows 应用程序的信息。

问题在于 win32 应用程序使用 WinMain() 作为其 main 函数,并在其中实现消息循环。因此,当您尝试在不定义 WinMain() 函数的情况下编译 win32 应用程序时,编译器会抱怨这一点。如果您要编写控制台应用程序并且不提供 main() 函数,也会发生类似的事情。