How do I set WinMain as entry point?

牧云@^-^@ 提交于 2021-02-05 05:30:31

问题


I've deleted the _tmain() method which the IDE generated because I find no sense having two entry points after adding my WinMainentry. And yes, this is my first ever C++ application and I am a newbie, but please be nice.

So that's all I got:

// Included headers:
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
// Shortened namespaces:
using namespace std;
// The main entry of the application:
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
    MessageBox( NULL, L"Hello World!", L"Just another Hello World program!", MB_ICONEXCLAMATION | MB_OK );
    return 0;
}
// End of file.

When I try to build and run I get this error:

error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup

error LNK1120: 1 unresolved externals

I realise the entry point is missing, But where can I set WinMain as the entry point? I just took a look in the properties of the project itself and found nothing. Note that I've started the project as a console application, But now I am trying to turn it into a regualr windows application.

Thanks.


回答1:


You need to change the subsystem to Windows.

enter image description here




回答2:


Project->Properties->Linker->System change Subsystem to /SUBSYSTEM:WINDOWS

If you have further trouble with it then start all over again, selecting Win32 Project instead of Win32 Console.




回答3:


It sounds you are trying to build a console application with code that you imported from a windows application.

Console applications use a main (or _tmain) entry point, whereas windows applications use a WinMain (or _tWinMain) entry point.

Edit: Indeed changing the linker option as Benjamin told you will solve your immediate problem but you are likely to meet other issues later with such hybrid projects. For example you may include some code relying on the _CONSOLE preprocessor symbol. You can of course adjust this latter setting yourself too but better restart from a clean win32 template as Scott and Hans suggested.



来源:https://stackoverflow.com/questions/23282187/how-do-i-set-winmain-as-entry-point

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!