undefined reference to 'WinMain@16'

本文介绍了一个C项目从64位切换到32位编译时遇到的“undefined reference to 'WinMain@16'”错误,并给出了通过添加main函数解决此问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象

一个C的项目,以64位模式编译时没有问题,切换到32位编译就报告错误:

undefined reference to ['WinMain@16'](mailto:'WinMain@16')

原因

首先上原来的代码:

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
	ShellExecute(NULL,"open","taskkill"," /F /IM nginx.exe",NULL,SW_HIDE);
	ShellExecute(NULL,"open","taskkill"," /F /IM php-cgi.exe",NULL,SW_HIDE);
	ShellExecute(NULL,"open","taskkill"," /F /IM php.exe",NULL,SW_HIDE);
	ShellExecute(NULL,"open","taskkill"," /F /IM BeyondClass.exe",NULL,SW_HIDE);
	return 0;
}

根据错误提示和网上找到的资料,说是因为这段代码没有main()函数导致。

解决

在代码中增加一个main函数:

#include <windows.h>

int main()
{
	ShellExecute(NULL,"open","taskkill"," /F /IM nginx.exe",NULL,SW_HIDE);
	ShellExecute(NULL,"open","taskkill"," /F /IM php-cgi.exe",NULL,SW_HIDE);
	ShellExecute(NULL,"open","taskkill"," /F /IM php.exe",NULL,SW_HIDE);
	ShellExecute(NULL,"open","taskkill"," /F /IM BeyondClass.exe",NULL,SW_HIDE);
	return 0;
} 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
	main();
	return 0;
}

再编译,OK,问题解决了。

转载于:https://my.oschina.net/tywali/blog/1581718

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值