gpt4 book ai didi

c++ - 编译仅依赖于 kernel32.dll 和 user32.dll 的 C++ 程序?

转载 作者:可可西里 更新时间:2023-11-01 12:39:01 25 4
gpt4 key购买 nike

我正在使用 Visual Studio 2005。

我想编译一个简单的程序,它可以与任何 Windows 32 位版本一起工作,而不管安装的 c++ 运行时库版本如何。

此程序将调用GetModuleHandleGetProcAddress 函数而不调用任何其他函数,然后退出,当退出代码是函数地址时。

如何编译只依赖 kernel32.dll 和 user32.dll 的 C++ 程序,而不需要任何 C++ 运行时库?

最佳答案

您需要定义自己的入口点,而不是使用 mainWinMain。您的入口点是一个不带参数的 void 函数。您必须使用 /entry:funcName 将其名称指定给链接器(其中 funcName 被替换为您为要用作入口点的函数指定的任何名称)。

执行此操作时,您还必须为链接器指定子系统,如 /subsystem:console 中所示。它通常根据它找到的函数名称推导出子系统(即 main -> console,WinMain -> Windows),但是当您使用自己的入口点时,你必须明确指定它。尽管您可能不想经常这样做,但即使您没有指定自己的入口点,也可以明确指定子系统,因此(例如)您可以使用 main 作为入口点Windows 子系统程序,或 WinMain 作为控制台程序的入口点。

关于c++ - 编译仅依赖于 kernel32.dll 和 user32.dll 的 C++ 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4786236/

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