您的位置:首页 > Web前端

undefined reference to 'WinMain@16'

2017-11-29 00:00 549 查看

现象

一个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,问题解决了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C/C++;问题