Visual C++ 2005 可以生成清单信息了
在 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)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。

相关推荐
- 第 193 期:微软将移除 Android 版 Outlook Lite 应用
- Posted on 09月09日
- 官宣:Visual Studio对Codespaces的支持
- Posted on 08月04日
- 小技巧:VS2010中添加控件成员变量没有反应的问题
- Posted on 07月19日
- 第 307 期:Windows 11 推出新版本任务栏电池图标
- Posted on 11月11日



评论已关闭。