c++ - IID_IDropTarget 和 Virtualtrees::IID_IDropTarget 之间的歧义

标签 c++ com c++builder virtualtreeview

我目前正在经历一个重构过程,包括以减少编译时间,我遇到了以下编译错误:

[C++ 错误] some_class.cpp(53): E2015 'IID_IDropTarget' 和 'Virtualtrees::IID_IDropTarget' 之间存在歧义

它指向的代码行是:

 if (iid == IID_IUnknown || iid == IID_IDropTarget)

如果我使用 Virtualtrees::IID_IDropTarget 它编译得很好,但是我需要使用我已经实现的 COMs IDropTarget 接口(interface)。我认为问题可能在于 Virtualtrees 组件具有 IDropTarget 接口(interface)的另一个实现,并且它们存在冲突。

关于如何指定我想要Virtualtrees::IID_IDropTarget 的任何想法?或者我用于 COM 的 IID_IDropTarget 的 namespace ?

最佳答案

COM 的 IID_DropTarget 声明如下:

EXTERN_C const IID IID_IDropTarget;

因为它是extern "C",所以它在根命名空间中:

::IID_IDropTarget

关于c++ - IID_IDropTarget 和 Virtualtrees::IID_IDropTarget 之间的歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2234952/

相关文章:

c++ - 我如何检查这是否是 std::list 的最后一个成员?

c++ - C++ 中的卷影复制

c# - 为具有 COM 对象的类编写正确的 IDisposable 实现

delphi - Delphi 和 Rad Studio 有什么区别?

c++ - 高级和低级编程语言之间的关系

c++ - 简单的 cin cout 代码由 "build and run"运行,但在 bin/debug/x.exe 中不起作用

c++ - 反对 Json 并返回

c++builder - BCB : how to iterate over controls on a form?

c++ - 我的 C++ vector 元素被删除

c++ - 不使用 ATL 实现 COM IDispatch