gpt4 book ai didi

c++ - 如何在 Visual Studio 中正确设置 exe 的入口点?

转载 作者:太空狗 更新时间:2023-10-29 20:00:05 25 4
gpt4 key购买 nike

我已将入口点设置为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com