【发布时间】:2014-04-25 00:30:55
【问题描述】:
我已删除 IDE 生成的 _tmain() 方法,因为在添加 WinMainentry 后我发现有两个入口点毫无意义。是的,这是我的第一个 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:未解析的外部符号 _main 在函数 ___tmainCRTStartup 中引用
错误 LNK1120:1 个未解决的外部问题
我意识到缺少入口点,但是我在哪里可以将WinMain 设置为入口点?我只是查看了项目本身的属性,没有发现任何东西。
请注意,我已将项目作为控制台应用程序启动,但现在我正试图将其转换为常规 Windows 应用程序。
谢谢。
【问题讨论】:
-
如果您以前从未这样做过,您怎么能“看不到任何意义”?顺便说一句,答案是你不能——因为那没有意义:)
-
你用的是什么编译器和IDE?
-
IIRC,
WinMain从操作系统的角度来看并不是真正的入口点。它由运行时环境(或 RT,如 CRT)调用,需要初始化(或启动,如 Startup)。所以,是的,_tmain的存在是有原因的。这是真正的切入点。WinMain只是“按惯例”的入口点。 -
正确设置所有设置的最简单方法是使用 Win32 项目模板而不是 Win32 控制台应用程序模板。开始错误后的下一个最好的事情是项目+属性,链接器,系统,将子系统设置更改为“Windows”。
-
我想我误解了你的误解。就像其他人说的那样,使用正确的模板就可以了。
标签: c++ entry-point winmain