gpt4 book ai didi

c++ - 适用于 Windows 的可移植 C/C++ 应用程序的 DLL 依赖项

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:39:33 25 4
gpt4 key购买 nike

我想用 C/C++ 为 Windows 创建一个轻量级的可移植应用程序。我不想静态链接所有内容,因为我想让 exe 的大小尽可能小。我也用 Dependency Walker跟踪我的 exe 文件的 DLL 依赖项。

我的问题是,应用程序可以拥有并在不同版本的 Windows 之间保持可移植性的 DLL 依赖项列表是什么?有了这个列表,我可以用列表检查 Dependency Walker 的输出,并选择要静态链接的库和动态链接的库。我更喜欢包含 Windows XP 操作系统的列表,但考虑到 Windows 98 也很有趣。

最佳答案

在 Visual Studio 之类的工具中创建一个基本的 Win32 应用程序,并使用 Dependency Walker 检查依赖关系。这些是您的基本依赖项。需要所有标准的 Win32 DLL 文件,包括 user32.dllkernel32.dll 等。 (尽管其中一些会有所不同,具体取决于您希望应用程序执行的操作。在某些情况下,您可以仅使用 kernel32.dll,但您将无法在屏幕。可能是一个相当无用的应用程序。)

请记住,可以编译在 Windows 98 上运行的应用程序的最新版本的 Visual Studio 是 Visual Studio 2005。Visual Studio 2008 可以针对最低 Windows 2000,而 VS 2010 可以针对最低 Windows XP SP2。您需要使用旧版本的编译器,或者手动编辑可执行文件的 PE header 以更改子系统字段。

如果您真的喜欢这样的事情(尽管这真的是在浪费时间),您应该研究 Matt Pietrek 的 LIBCTINY,最初来自 an article早在 2001 年 1 月就发表在 MSDN 杂志上。这个小库使得理论上可以使用 /NODEFAULTLIB compiler flag为了避免链接到 CRT。

关于c++ - 适用于 Windows 的可移植 C/C++ 应用程序的 DLL 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6689132/

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