Повторяющиеся записи 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
атрибут и импортировать все типы в глобальное пространство имен.