升级 Visual Studio 产量 - “IAsyncOperation”:未定义基类和未定义 IID_IAsyncOperation

Posted

技术标签:

【中文标题】升级 Visual Studio 产量 - “IAsyncOperation”:未定义基类和未定义 IID_IAsyncOperation【英文标题】:Upgrading Visual Studio Yields - 'IAsyncOperation': base class undefined and IID_IAsyncOperation undefined 【发布时间】:2018-11-27 23:30:00 【问题描述】:

我正在测试 VS2017,看看我是否可以从 VS2008 迁移到它(我认为我们现在可以放弃 Win9x,但仍然需要 NT4)并且所有看起来都非常适合构建库,但由于'IAsyncOperation': base class undefinedIID_IAsyncOperation undefined 错误。我想可能是因为我在初始安装时没有安装MFC,所以重新安装并添加了MFC,但仍然有问题。我搜索了包含目录,也找不到。在网上搜索,没有运气。那么是否有直接的替代品(我想将它们包装在#if 中,以便在需要时仍然可以使用 V2008 构建)。

TIA!!

【问题讨论】:

【参考方案1】:

终于找到了:

#if _MSC_VER >= 1900
#include "Shldisp.h"
#define IAsyncOperation IDataObjectAsyncCapability
#define IID_IAsyncOperation IID_IDataObjectAsyncCapability
#endif

【讨论】:

“终于找到了” - 那是什么意思?您在 SDK/MFC 标头中找到了这个作为替代品?您找到解决问题的方法了吗?如果是后者,那么您使用了错误的检查。是否声明符号是 SDK 的属性,而不是您使用的 IDE/编译器。此外,由于这是 C++,您可能希望 using 优于预处理器定义。 回答“那么是否可以直接替代那些(我想将它们包装在 #if 中,以便在需要时仍然可以使用 V2008 构建)”? 这既不能解释答案,也不是正确的解决方案。一旦您在 VS 2008 版本中切换到更新的 SDK,您将再次遇到同样的问题。 我安装了 VS2013 并遇到了这个确切的问题。出于某种原因,我无法解释缺少“IAsyncOperation”的定义,尽管我以前没有遇到过这个问题。我正在投票,因为这让我可以继续做更重要的事情。 :)

以上是关于升级 Visual Studio 产量 - “IAsyncOperation”:未定义基类和未定义 IID_IAsyncOperation的主要内容,如果未能解决你的问题,请参考以下文章

从 Visual Studio 2008 升级到 Visual Studio 2010 速成版

将crm 4插件项目从visual studio 2005升级到visual studio 2010

Microsoft visual studio C++中,#include <vector> 语句,但是报错说vector未声明的变量?请问为啥?

如何让 Visual Studio 自动升级项目?

Visual Studio 集成了.NET 升级助手插件

用 Visual Studio 升级 .NET 项目