如何在现有的 Windows 应用程序中获得 ATL 支持

Posted

技术标签:

【中文标题】如何在现有的 Windows 应用程序中获得 ATL 支持【英文标题】:How to get ATL support into an existing Windows application 【发布时间】:2014-09-29 14:30:22 【问题描述】:

我正在使用 Visual Studio 2012 中的 Qt 5.3.1 构建一个应用程序。我还想使用一个硬件库,这需要我向项目中添加一个简单的 ATL 对象。这可以通过使用 Visual Studio 向导来完成。该向导抱怨我的项目既不是 MFC 可执行文件,也不是完全支持 ATL 的 MFC DLL。

我的问题是:如何将这种支持添加到我的应用程序中?在项目属性中,我将项目配置为链接到 ATL 并使用 MFC。它不起作用。无论是静态的还是动态的。

如果有其他解决方案可以将简单的 ATL 对象添加到项目中,请告诉我。

【问题讨论】:

“这需要我在项目中添加一个简单的 ATL 对象”是什么意思? @SimonMourier 我需要使用 COM 对象。软件文档告诉我应该使用 ATL 对象来接收来自硬件接口的事件。 ATL 不需要使用 COM。这只是一种方便。由于 Qt 对其他库极为不利,您可能需要评估在没有帮助库的情况下使用 COM 的可能性。 【参考方案1】:

添加ATL支持的向导适用于C++项目的源代码,包括检查当前代码是否已经是ATL项目,项目是否可以添加ATL支持,以及代码修改本身。

如果向导“不喜欢”您项目中的某些内容,则会显示一个错误,这基本上意味着该向导确实知道如何安全地修改您的源代码。然而,这并不意味着添加 ATL 支持是不可能的。并且在项目设置中启用一个选项是不够的,因为源代码需要一些显式的初始化内容。

在不考虑太多的情况下添加 ATL 支持的最佳方法是创建一个与您当前拥有的项目类型匹配的新空项目,例如MFC 应用程序。然后拍摄源代码快照,然后使用向导添加 ATL 支持。然后比较更改并将它们复制到您的实际项目中。这同样适用于使用 Visual Studio 向导添加 ATL 简单对象的下一步。

一些相关链接(尽管上面的方法对我来说看起来最简单):

How To Add ATL Support to an MFC EXE Adding ATL support to existing mfc application Add automation support to MFC DLL

【讨论】:

以上是关于如何在现有的 Windows 应用程序中获得 ATL 支持的主要内容,如果未能解决你的问题,请参考以下文章

如何在现有的 Web 应用程序中使用 apache spark

如何在现有的 Cognito 用户池中获取生日? (放大 iOS)

如何在现有的 ios 测试项目中启用 xcode 7 UI 测试

在现有的应用中安装Laravel身份验证

如何在现有的 Ad-Hoc 配置文件中添加新设备?

Unity 3D:在现有的Android游戏场景中显示AdMob的横幅