Windows manifest文件

2023-04-24  本文已影响0人  CodingCode
  1. 背景

manifest的介绍:
https://learn.microsoft.com/en-us/windows/win32/sbscs/application-manifests

其背景是为了解决DLL Hell问题:
https://en.wikipedia.org/wiki/DLL_Helli

  1. 如何生成manifest文件

link选项

cl ... -link /MANIFEST[:{EMBED[,ID=resource_id]|NO}]

/MANIFEST       : 生成.manifest文件
/MANIFEST:EMBED : 不生成.manifest文件,把内容直接打入可执行文件
/MANIFEST:NO    : 不生成.manifest文件

貌似/MANIFEST:NO和没有/MANIFEST选项是一样的作用,就是不生成manifest。

关于ID=resource_id的说明,简单的说就是,缺省情况下:

(参考:/MANIFEST (Create side-by-side assembly manifest, https://learn.microsoft.com/en-us/cpp/build/reference/manifest-create-side-by-side-assembly-manifest?view=msvc-170

  1. 如何把.manifest文件打入可执行文件,以及如何从可执行文件提取.manifest文件

利用mt.exe工具:

  1. 从可执行文件提取manifest信息:
mt.exe -inputresource:<PGM>.exe;#1 -out:<PGM>.exe.manifest
  1. 把manifest写入可执行文件:
mt.exe -manifest <PGM>.exe.manifest -outputresource:<PGM>.exe;#1

关于#1的定义,参考前面manifest的定义,缺省情况下EXE文件是1,DLL文件是2。

上一篇下一篇

猜你喜欢

热点阅读