加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 04:30:45 所属栏目:Windows 来源:网络整理
导读:我想用C/C++ for Windows创建一个轻量级的便携式应用程序.我不想静态链接所有内容,因为我希望尽可能减小exe的大小.我还使用 Dependency Walker来跟踪我的exe文件的DLL依赖项. 我的问题是,应用程序可以拥有的DLL依赖项列表是什么,并且可以在不同版本的Windows
我想用C/C++ for Windows创建一个轻量级的便携式应用程序.我不想静态链接所有内容,因为我希望尽可能减小exe的大小.我还使用 Dependency Walker来跟踪我的exe文件的DLL依赖项.

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

解决方法

在Visual Studio之类的东西中创建一个基本的Win32应用程序,并使用Dependency Walker检查依赖项.这些是你的基础依赖.将需要所有标准的Win32 DLL文件,包括user32.dll,kernel32.dll等. (虽然其中一些变化,取决于你希望应用程序做什么.在某些情况下,你可以只使用kernel32.dll,但你将无法在屏幕上显示一个窗口.可能相当无用应用程序.)

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

如果你真的喜欢这样的事情(虽然这实际上是浪费时间)你应该调查Matt Pietrek的LIBCTINY,最初是从2001年1月在MSDN杂志上发表的an article.这个小图书馆使理论上可以使用/NODEFAULTLIB compiler flag为了避免链接到CRT.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读