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

qgelzfjb  于 2022-12-02  发布在  其他
关注(0)|答案(7)|浏览(399)

我正在使用eclipse CDT测试英特尔指令,下面是我的程序:

#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

请帮我解决这个问题。

np8igboo

np8igboo1#

你的程序还不完整。你需要实现操作系统期望的入口点。在你的例子中,它看起来像是WinMain

ncgqoxb0

ncgqoxb02#

是,Main()函数丢失,编译器无法找到执行程序的入口点。
还有一个原因是,即使您已经编写了main函数,但如果您没有保存.cpp文件并尝试编译它,也会给予同样的错误。因此,请确保您已经成功保存了.cpp文件,然后编译并运行您的代码。
希望这将有助于,因为我已经面临类似的问题,我花了大约几个小时来弄清楚,谢谢

nkcskrwz

nkcskrwz3#

1.缺少main()函数。
1.将此代码另保存为某个新文件。再次运行以编译代码。
1.检查PATH环境变量。

lg40wkob

lg40wkob4#

在VS程式码中,如果您尚未储存程式码,就会发生这种情况。请按一下Ctrl + s储存程式码,然后再次执行程式。
或者要让这个自动发生,转到 * 设置 *,搜索“保存”。向下滚动,搜索“运行前是否保存当前文件”并启用它。

p1iqtdky

p1iqtdky5#

你必须先保存文件〉〉Ctrl + s

piah890a

piah890a6#

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

66bbxpm5

66bbxpm57#

  • 尝试与您的***'cmd'**.同样的错误出现在我身上,虽然代码是正确的,我试图运行它我的命令,它的工作.

相关问题