Visual C++ 2005 可以生成清单信息了

Visual C++ 2005 可以生成清单信息了

作者:BlogUpdater |  时间:2024-03-11 |  浏览:1073 |  评论已关闭 条评论

在 Visual C++ 2005 中,我们可以通过 #pragma 指令来生成你想要的清单信息,这项功能可以简化新版本通用控件的使用。
例如,下面的代码可以指示链接器,将通用控件的新版本(6.0.0.0)链接到应用程序中。

================================================================
// do not use – see discussion below
#pragma comment(linker, \
“\”/manifestdependency:type=’Win32′ “\
“name=’Microsoft.Windows.Common-Controls’ “\
“version=’6.0.0.0′ “\
“processorArchitecture=’X86′ “\
“publicKeyToken=’6595b64144ccf1df’ “\
“language=’*’\””)
================================================================

请注意,在上面的代码中,我们使用了硬编码的方式来指定处理器架构,我们指定了 x86 架构。
这意味着,如果你的目标平台是 x64 架构,则会生成错误的清单信息。

为了修正此问题,可以使用如下的代码:

================================================================
#if defined(_M_IX86)
#define MANIFEST_PROCESSORARCHITECTURE “x86”
#elif defined(_M_AMD64)
#define MANIFEST_PROCESSORARCHITECTURE “amd64”
#elif defined(_M_IA64)
#define MANIFEST_PROCESSORARCHITECTURE “ia64”
#else
#error Unknown processor architecture.
#endif
#pragma comment(linker, \
“\”/manifestdependency:type=’Win32′ “\
“name=’Microsoft.Windows.Common-Controls’ “\
“version=’6.0.0.0′ “\
“processorArchitecture='” MANIFEST_PROCESSORARCHITECTURE “‘ “\
“publicKeyToken=’6595b64144ccf1df’ “\
“language=’*’\””)
================================================================

更新:之前我没有意识到,我们可以在清单指令中直接使用 * 来代表任意架构,这就方便很多了,如下所示:

================================================================
#pragma comment(linker, \
“\”/manifestdependency:type=’Win32′ “\
“name=’Microsoft.Windows.Common-Controls’ “\
“version=’6.0.0.0′ “\
“processorArchitecture=’*’ “\
“publicKeyToken=’6595b64144ccf1df’ “\
“language=’*’\””)
================================================================

总结

我是一个 #pragma 的重度使用者,因为我倾向于在代码中(而不是在开发环境中)指定所有的设定。
这样,你的东西就不再依赖开发环境,而是依赖你自己的代码。是不是更加有安全感?
居安,思危。

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Visual C++ 2005 will generate manifests for you》

最近我写了个东西

正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。

标签:

评论已关闭。