this one之类的问题涉及由于未在PE标头中设置正确的子系统版本而导致的问题。我可以在Visual C ++上使用/SUBSYSTEM
,在gcc上使用-Wl,--(major/minor)-subsystem-version
。
但我注意到PE头中还有一个操作系统版本字段。这是由-Wl,--(major/minor)-os-version
在gcc上设置的;我在微软的链接器中看不到相同的选项。令我困惑的是,gcc默认将OS字段和子系统字段设置为4.00。那么这两者之间的区别是什么呢?
("图像版本"标题字段是否与其中任何一个相关?)
此外,我发现还可以在清单文件中指定支持的Windows版本。 This question显示有几个被同时使用。
所有这些设置之间的区别是什么?使用其中一个设置有什么好处?或者所有人都在同一时间?
如果我有DLL怎么办?如果链接到它的EXE没有相同设置,那么这些不适用于DLL吗?
感谢。