Повторяющиеся записи ENUM в двух компонентах COM

Я использую два компонента ATL/COM в своем приложении VC++ с помощью следующего оператора импорта.

#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, но получаю сообщение об ошибке, так как коллекция объявляется дважды. Может кто-нибудь, пожалуйста, направьте меня, чтобы решить эту проблему.

1 ответ

Решение

Вы можете устранить неоднозначность между типами с одинаковыми именами, переместив их в разные пространства имен. Для этого удалите атрибут no_namespace. Если типы еще не объявлены в пространстве имен, вы можете использовать атрибут rename_namespace в директиве #import.

В качестве альтернативы вы можете переименовать одно или оба из имен встречающихся типов. Это позволяет вам сохранить no_namespace атрибут и импортировать все типы в глобальное пространство имен.

Другие вопросы по тегам