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

  • 相关阅读:
    思维链(Chain-of-Thought Prompting Elicits Reasoning in Large Language Models)
    2022 年前端趋势的 技术发展情况
    超详细curl新增支持openssl(https协议)支持
    antd树节点,选多个会合并在一起问题
    HTML5 和 CSS3 的新特性--品优购main主体模块制作
    使用LevelDB 实现富查询
    应该如何发展美妆行业?
    【走方格的方案数】
    mysql与msql2数据驱动
    「Redis」03 配置文件详解
  • 原文地址:https://blog.csdn.net/mmxida/article/details/136616232