未定义引用`WinMain @ 16'colle2.exe:错误:ld返回1退出状态

时间:2013-06-05 17:33:03

标签: c eclipse intel winmain

我使用eclipse CDT测试Intel指令,下面是我的程序:

#define cpuid(func,ax,bx,cx,dx)\
__asm__ __volatile__ ("cpuid":\
 "=a" (ax), "=b" (bx), "=c" (cx), "=d" (dx) : "a" (func));
int Check_CPU_support_AES()
 {
 unsigned int a,b,c,d;
 cpuid(1, a,b,c,d);
 return (c & 0x2000000);
 }

当我编译上面的代码时,我得到链接错误:

Info: Internal Builder is used for build
gcc -O0 -g3 -Wall -c -fmessage-length=0 -o "src\\Intel.o" "..\\src\\Intel.c" 
gcc -o Intel.exe "src\\Intel.o" 
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../libmingw32.a(main.o):main.c:(.text.startup+0xa7): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status

请帮我解决这个问题。

4 个答案:

答案 0 :(得分:3)

您的计划尚未完成。您需要实现OS预期的入口点。在您的情况下,它看起来像是WinMain

答案 1 :(得分:0)

是的,缺少Main()函数,并且编译器无法找到执行程序的入口点。

另一个原因是即使您已经编写了main函数,但是如果您没有保存.cpp文件并尝试对其进行编译,也会产生相同的错误。因此,请确保已成功保存.cpp文件,然后进行编译并运行您的代码。

希望这会有所帮助,因为我遇到了类似的问题,并且花了大约几个小时来弄清楚, 谢谢

答案 2 :(得分:0)

  1. 缺少main()函数。
  2. 作为此代码另存为一些新文件。再次运行以编译代码。
  3. 检查PATH环境变量。

答案 3 :(得分:0)

main() 替换 main(int argc,char **argv),它对我有用。