提问人:Chris_45 提问时间:9/24/2009 更新时间:9/24/2009 访问量:536
在 Visual Studio 2008 的 Win 32 上的 C 程序中无法解析的外部
Unresolved external in C-program on Win 32 in Visual Studio 2008
问:
为什么这个 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 个未解决的外部问题
答:
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() 函数,也会发生类似的事情。
上一个:为什么我收到未解决的外部问题?
下一个:对未解析的外部符号错误感到困惑
评论