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

  • 相关阅读:
    C# Solidworks二次开发:创建距离配合以及移动组件API详解
    DM8重做日志文件和归档管理
    PostgreSQL设置主键从1开始自增
    C++DAY47
    d唐的导入C的经验
    HTTP协议的请求协议和响应协议的组成,HTTP常见的状态信息
    java图书管理系统
    Vosviewer的安装与使用
    如何扩展及优化CI/CD流水线?
    Web前端高频面试题解析(javascript篇)--- 每日十题(6)
  • 原文地址:https://blog.csdn.net/mmxida/article/details/136616232