如何将WinMain设置为入口点?

时间:2014-04-25 00:30:56

标签: c++ entry-point winmain

我删除了IDE生成的_tmain()方法,因为在添加WinMain条目后我发现没有任何意义上有两个入口点。是的,这是我的第一个C ++应用程序,我是一个新手,但请你好。

这就是我得到的全部内容:

// 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.

当我尝试构建并运行时,我收到此错误:

  

错误LNK2019:函数___ tmainCRTStartup中引用了未解析的外部符号_main

     

错误LNK1120:1个未解析的外部

我意识到缺少入口点,但是我可以在哪里设置WinMain作为入口点?我只是看看项目本身的属性,什么也没发现。 请注意,我已将该项目作为控制台应用程序启动,但现在我正在尝试将其转换为regualr Windows应用程序。

感谢。

3 个答案:

答案 0 :(得分:2)

您需要将子系统更改为Windows。

enter image description here

答案 1 :(得分:1)

项目 - &gt;属性 - &gt;链接器 - &gt;系统更改子系统到/ SUBSYSTEM:WINDOWS

如果你有进一步的麻烦,那么重新开始,选择Win32 Project而不是Win32控制台。

答案 2 :(得分:0)

听起来您正在尝试使用从Windows应用程序导入的代码构建控制台应用程序。

控制台应用程序使用主(或_tmain)入口点,而Windows应用程序使用WinMain(或_tWinMain)入口点。

编辑:确实改变链接器选项,因为本杰明告诉你将解决你的直接问题,但你可能会在以后的混合项目中遇到其他问题。例如,您可以包含一些依赖于_CONSOLE预处理器符号的代码。 您当然可以自己调整后一种设置,但最好从干净的win32模板重新启动,如Scott和Hans建议的那样。