【问题标题】:Where can I get the Active Template Library?我在哪里可以获得活动模板库?
【发布时间】:2010-10-20 05:12:47
【问题描述】:

我以前从未使用过 COM,我的任务是编写一个使用一些第三方 COM 对象的应用程序。如果有人能指出一些关于如何使用它们的好教程,将不胜感激。更直接的是,我似乎没有安装活动模板库。我在网上搜索过,但不知道如何获得。

【问题讨论】:

  • 2014 年 11 月,Microsoft 发布了 Visual Studio 2013 Update 4 的免费“社区版”,其中包括 ATL 和 MFC。截至 2016 年 1 月,它们仍然是 Visual Studio 2015 社区版的一部分。

标签: atl


【解决方案1】:

它是 Microsoft Visual Studio 的一部分(但不是 Express Edition。)

【讨论】:

    【解决方案2】:

    我认为您必须拥有 Visual Studio 2005 或 2008(不是 Express)的副本才能获得 ATL。如果您安装了其中一个,但没有 ATL,请转到“控制面板:添加/删除程序”并执行“修改”安装(在驱动器中使用程序 CD 或 DVD)并确保该框为 ATL 检查。

    【讨论】:

      【解决方案3】:

      正如 Dan 指出的,这些是随 Visual Studio 分发的。

      如果您没有 Visual Studio,可以从 Microsoft Visual C++ Redistributable 包之一获取 ATL 库:

      注意:标2005的是版本8(atl80.dll),标2008的是版本9(atl90.dll)。

      【讨论】:

      • 这不会让你得到标题,这样你就可以真正编写 ATL 代码,对吧?
      • 我从未使用过 ATL。我只是假设它是通过 DLL 调用完成的。
      • 当我在我的 atl 项目中单击添加项目时,我没有看到 atl 组件。没有 Visual C++/ATL 类别
      • 这些链接已损坏。现在他们只是带我到一个页面下载 Windows、Office 等。
      【解决方案4】:

      至于教程:

      我还没有在网上找到一个非常好的。有几个关于使用 ATL/COM 的 OK 页面:

      • The Active Template Library Makes Building Compact COM Objects a Joy by Don Box(资深大师 通信)。本文开头:“我爱 通讯。 COM是好的。就像一个很好的比尔森啤酒 或者麦芽酒,COM 永远不会让人失望。在 事实上,我越看 COM, 我更喜欢它。不幸的是,我工作 在 C++ 中,而 C++ 不共享我的 欣赏更美好的事物 生命。”尽管大师的 传教,事实上它是 现在12岁了,挺好的 文章...
      • Mike Dunn 在 CodeProject 上的出色 tutorial on COM。
      • DevGuy's C++ COM Tips——链接和建议的大杂烩。
      • The COM Programmer's Cookbook -- 这篇古老的(1995 年)文章还不错,尽管它年代久远,而且它描述了用 C 而不是 C++ 实现 COM 对象(显式 vtables!)

      我自己对 COM 和 ATL 有点生疏,但如果我没记错的话,你会想学习的类你会使用得最多(尤其是如果你使用的是别人的 COM 对象而不是而不是实现你自己的)是 CComBSTR、CComPtr 和 CComVariant。此外,Visual C++ 中的#import 语句使使用外部 COM 对象变得更加容易,它从外部 DLL 或 EXE 为您生成智能指针类。

      如果您要实现 COM 对象,我强烈建议您获取一份ATL Internals 的副本(现在有一个更新的版本涵盖了 ATL v8)。是的,它确实在各个部分中进行了一些血腥的细节,但即使作为一本入门书,它也写得相当好。

      如果您以前从未使用过 COM,那么“经典”书籍 Essential COM 和 Effective COM 非常好,您可能可以从您最喜欢的旧书来源以低廉的价格获得它们。如果您还没有熟悉 RAII 成语,您还需要非常熟悉。

      新闻组microsoft.public.vc.atl 非常适合提出特定问题。 (不过,它们在那儿往往比在 StackOverflow 上更粗暴)

      注意:COM 有很多小问题,尽管 ATL 确实帮助它变得更容易并且没有太多臃肿。 “模拟动态绑定”技术又名CRTP 在 C++ 世界中很有用,不仅在 ATL/COM 的上下文中,而且特别是如果您正在开发一个可重用类库,您希望在只有一个的情况下子类化或混合实例一次存在(例如,一个类 CSpiffyFramework 提供了您希望大量重用的混合功能,并且您有一个想要包含该功能的派生类,它不是虚拟对象模型的一部分,所以您不要' t 真的需要一个 vtable)。

      祝你好运!

      【讨论】:

        【解决方案5】:

        我安装了这个:http://www.microsoft.com/en-us/download/details.aspx?id=3138,并在我的构建服务器上获得了 C++ 编译器和所有东西,但没有 ATLMFC 库。 上面链接的 redist 包就是可再发行的,而不是所需的头文件和包含文件。 经过大量搜索,我最终在服务器上安装了vs2008,废话。

        【讨论】:

          【解决方案6】:

          这里是如何将 atl 与 vs express 一起使用:

          您需要 WDK 7.1.0:

          https://www.microsoft.com/en-us/download/details.aspx?id=11800

          1. 下载 Visual Studio 速成版

            从 Microsoft 免费获取 VS Express C++

          2. 从 Microsoft 下载免费提供的 Windows 驱动程序工具包(7.1 或更高版本)

            从 Microsoft 免费获取 WDK 7.1.0

            您可以使用 Virtual Clone Drive 挂载 ISO 文件或使用 7-zip 解压。

          3. 安装 WDK 并选择“构建环境”选项

            这将安装 ATL 和 MFC 头文件和库文件。 ATL 是 Windows 上 FireBreath 的要求。确保将其安装在默认位置,以便 FireBreath 可以找到它

          4. 对于 VS Express 2010

            如果您使用的是旧版本的 FireBreath,scjohn 的这篇文章可能对您有用。请注意,FireBreath 1.4 beta 1 及更高版本不再需要这些步骤!

          http://www.firebreath.org/display/documentation/Building+with+Visual+Studio+Express

          [vs2010 express 包含路径]

          C:\WinDDK\7600.16385.1\inc\atl71

          [vs2010 express lib路径]

          C:\WinDDK\7600.16385.1\lib\ATL\i386

          【讨论】:

          • 这总体上是过时和错误的。 ATL 包含在 Visual Studio 的最后几个版本的免费“社区”版本中。不需要安装WDK,然后WDK的ATL就是精简版。
          • @RomanR。我希望你是对的,但是看看这个链接:stackoverflow.com/questions/3898287/… 并且社区版本在某些情况下不能免费用于商业目的。 express 版本只有最后的希望或 mingw、clang 等。
          • 链接的问题有一个带有屏幕截图的答案,带有用于检查以获得 ATL 的框。请注意,您链接的 WDK 的 ATL 是 _ATL_VER=0x0800,对应于 Visual Studio 2005。不仅对于使用当前工具集进行开发没有意义,代码甚至不必编译,也不必安全运行(2005 ATL 尤其存在与 DEP 相关的问题)。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-30
          • 2011-02-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多