【发布时间】:2016-12-31 03:12:26
【问题描述】:
我想创建一个非常简单的后台应用程序。 我从空的 c++ 项目开始,然后使用以下代码创建一个 source.cpp 文件:
#include "Windows.h"
int WINAPI _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
MSG Msg;
while (GetMessage(&Msg, NULL, 0, 0))
{
}
return 0;
}
然后我将项目的设置设置如下:
属性 -> 配置属性 -> 链接器 -> 系统:设置子系统为:Windows (/SUBSYSTEM:WINDOWS)
属性->配置属性->链接器->高级->设置入口点是:_tWinMain
我做得对吗?另外我想将MFC库添加到这个项目中,这样我就可以使用MFC的功能了,我该怎么做呢?
感谢阅读:)
编辑: 奇怪的是,我只需要包含“tchar.h”并且错误[LNK1561:必须定义入口点]消失。我不再需要配置项目设置。我只需要下面的代码:
#include "Windows.h"
#include "tchar.h"
int WINAPI _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
//MessageBox(0, _T("test"), _T("Test"), 0);
return 0;
}
【问题讨论】:
-
我想从头开始,这样我就可以完全理解 Windows 进程是如何运行的。
-
不要摆弄入口点。将其保留为默认值。如果您将其设置为
_tWinMain,您将跳过必需 CRT 启动代码。这包括具有静态存储持续时间的对象的初始化程序等。如果您想了解 Windows 进程的工作原理,请阅读一本书(如 Russinovich 的 Windows Internals)。无论您做什么,都不要添加 MFC。这将使它更难理解,发生了什么。更何况,如果您不精通 C++、Windows API 或 MFC。 -
如果我不配置入口点,项目将无法构建,它会显示错误:必须定义入口点,所以我这样做:stackoverflow.com/questions/17070367/…
-
恐怕您应用了错误的解决方案。我对您链接到的评分最高的答案发表了评论(并投票)。
-
@IInspectable:非常感谢,我会深入研究这个话题。
标签: c++ winapi visual-c++