在以下导入语句的帮助下,我在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的错误。 有人可以指导我解决这个问题。
答案 0 :(得分:2)
您可以通过将相同名称的类型移到不同的命名空间中来消除歧义。为此,请删除no_namespace属性。如果尚未在名称空间中声明类型,则可以在rename_namespace中使用#import directive属性。
作为替代,您可以rename一个或两个冲突类型名称。这使您可以保留no_namespace
属性,并将所有类型导入全局名称空间。