为什么SWIG需要使用mt.exe生成清单文件?

时间:2011-01-12 20:14:33

标签: c++ visual-studio manifest swig

我正在测试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,但似乎工作正常。

2 个答案:

答案 0 :(得分:1)

这与SWIG无关,而是与Visual C ++如何生成二进制输出有关。

mt.exe tool 生成清单文件,嵌入来自已存在的清单文件中的信息(我认为链接器已创建) it)进入输出DLL。如果没有这个,输出DLL只能在清单文件沿着同一目录中的DLL驻留时才能工作。

(注意:我从来没有真正费心去深入挖掘清单,在那里有什么信息,如果那里的所有信息都是需要的,但是因为它只是在你创建一个exe或dll时自动完成的除非某些东西不起作用,否则VC ++不应该立即打扰: - )

答案 1 :(得分:1)

在2010年之前的VS版本中,这是一个非常大的交易.mt.exe将自动生成的清单嵌入到可执行映像中,这对于获取存储在Windows并行缓存中的DLL依赖项非常重要。这不是什么大不了的事,它只是嵌入了“我与Vista兼容”的表现。对于VS2010而言,并排缓存相当令人头疼并被放弃了。

您应该检查构建目录中的.manifest文件,并确保其中没有重要内容。就像启用视觉样式的通用对话框版本6条目一样。