- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我已将入口点设置为 WinMain,但当我运行应用程序时它启动但不显示,然后我必须使用任务管理器将其关闭。这是 WinMain() 之前的代码:
#include <Windows.h>
// forward declarations
LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
// The entry point into a windows program
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int windowStyle )
{
....
我没有使用 C++ 的经验,我不知道它在做什么,只是让我的 exe 文件更小,这正是我想要实现的目标。
编辑:我想做的是创建一个非常小的窗口 exe 来了解演示编码器的工作方式。所以我正在考虑创建一个小的 c++ 窗口应用程序,它提供一个我可以附加 SlimDX 的窗口句柄(如果我可以将最终的 c++ dll 静态链接到 C# 应用程序,但我还没有)我有我的 BasicWindow .exe 减少到 6,656 字节。因此,我正在试验任何我能找到的东西,以将尺寸减小到 <3k。
[2012.Jan.10] 好吧,我在 VS2010 下重建 minicrt(可从 http://www.benshoof.org/blog/small-programs/ 获得)并将其添加为附加依赖项,取得了一些成功。我无法按照建议忽略所有默认库,但我现在有一个 exe 大小为 4,096 字节的窗口应用程序。我会说这是一些重大的成功。我现在在攻击距离之内。从这里开始的每一次减少,都为 SlimDX 提供了更多空间。考虑到我编写的唯一 C++ 应用程序是控制台应用程序和一个基本窗口,我很高兴 :) 我很幸运,我知道!
最佳答案
一个典型的应用程序不应该搞乱链接器的入口点
设置。入口点应设置在标准运行时库中包含的函数上(对于 windows 子系统的 unicode 应用程序,它是 wWinMainCRTStartup
)。此函数执行 CRT 的正确初始化和全局对象的创建等操作。通过将入口点重新路由到您的 WinMain
,您将获得未定义的行为,除非您确切地知道您在做什么并以某种方式在您自己的 WinMain
中实现 CRT 初始化。在我看来,由此产生的尺寸减小可以忽略不计,整个事件不值得冒这个风险。
关于c++ - 如何在 Visual Studio 中正确设置 exe 的入口点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8790923/
我是一名优秀的程序员,十分优秀!