• 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》

  • 相关阅读:
    51单片机学习:外部中断0实验
    Springboot毕设项目美食点评系统gb9o5(java+VUE+Mybatis+Maven+Mysql)
    联合概率和条件概率的区别和联系
    数仓实践:数据回滚的实现思路
    Redis6搭建高可用的多主多从集群
    设计模式-原型模式
    Unity 编辑器选择器工具类Selection 常用函数和用法
    贪心,队列,运算符重载,牛客:连环爆炸
    【JavaDoc注释风格详解】
    小马识途:如何稀释百科词条里的负面信息?
  • 原文地址:https://blog.csdn.net/mmxida/article/details/136616232