undefined reference to 'WinMain@16'

现象

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

undefined reference to '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,问题解决了。

posted @ 2017-11-29 17:44  Lancelot.tywali  阅读(860)  评论(0编辑  收藏  举报