两个COM组件中ENUM的重复条目

时间:2018-10-25 10:02:49

标签: c++ visual-c++ import mfc atlcom

在以下导入语句的帮助下,我在VC ++应用程序中使用了两个ATL / COM组件。

#import "First.dll"  raw_interfaces_only, raw_native_types, no_namespace, named_guids
#import "Second.dll"    raw_interfaces_only named_guids no_namespace no_implementation 

First.DLL和Second.DLL有一些重复的声明。例如,在两个导入的DLL文件中都声明了以下枚举。

enum Collection
 {
    JAN,
    SEPT,
    DEC
 }

我想同时使用这两个DLL,但遇到类似两次声明Collection的错误。 有人可以指导我解决这个问题。

1 个答案:

答案 0 :(得分:2)

您可以通过将相同名称的类型移到不同的命名空间中来消除歧义。为此,请删除no_namespace属性。如果尚未在名称空间中声明类型,则可以在rename_namespace中使用#import directive属性。

作为替代,您可以rename一个或两个冲突类型名称。这使您可以保留no_namespace属性,并将所有类型导入全局名称空间。