升级 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 undefined
和 IID_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未声明的变量?请问为啥?