【问题标题】:Why SWIG needs to generate manifest file with mt.exe?为什么 SWIG 需要使用 mt.exe 生成清单文件?
【发布时间】:2011-01-12 20:14:32
【问题描述】:
我正在测试 swig,我发现 SWIG 的 vcxproj 文件运行 mt.exe 来生成清单文件。
swig -c++ -csharp example.i
CL.exe ... -> compile the c++ source
link.exe ... -> generate dll
mt.exe ...
Csc.exe ...
这是干什么用的?我跳过了 mt.exe,但它似乎工作正常。
【问题讨论】:
标签:
c++
visual-studio
manifest
swig
【解决方案1】:
在 2010 年之前的 VS 版本中,这是一个非常大的交易。mt.exe 将自动生成的清单嵌入到可执行映像中,这对于获取存储在 Windows 并行缓存中列出的 DLL 依赖项很重要.没什么大不了的,它现在只嵌入了“我与 Vista 兼容”清单。并行缓存相当令人头疼,并在 VS2010 中被放弃。
您应该检查构建目录中的 .manifest 文件并确保其中没有任何重要内容。就像启用视觉样式的通用对话框版本 6 条目一样。
【解决方案2】:
这与 SWIG 无关,而与 Visual C++ 如何生成它的二进制输出有关。
mt.exe tool 不生成清单文件,它嵌入清单文件中已经存在的信息(我认为链接器会创建它)进入输出DLL。如果没有这个,输出 DLL 可能仅在清单文件与 DLL 位于同一目录中时才有效。
(注意:我从来没有真正费心深入研究清单,其中究竟有什么信息以及是否一直需要其中的所有信息,但因为它只是在您创建 exe 或 dll 时自动完成VC++ 不应该立即需要打扰,除非有什么不工作:-)