0

我在下面的 import 语句的帮助下在我的 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 被声明了两次。有人可以指导我解决这个问题。

4

1 回答 1

2

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

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

于 2018-10-25T10:14:02.190 回答