Я использую два компонента 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, но получаю сообщение об ошибке, так как коллекция объявляется дважды.
Может кто-нибудь, пожалуйста, направьте меня, чтобы решить эту проблему.
Вы можете устранить неоднозначность между типами с одинаковыми именами, переместив их в разные пространства имен. Для этого удалите no_namespace приписывать. Если типы еще не объявлены в пространстве имен, вы можете использовать rename_namespace атрибут в директива #import.
В качестве альтернативы вы можете переименовать одно или оба из имен встречающихся типов. Это позволяет вам сохранить no_namespace
атрибут и импортировать все типы в глобальное пространство имен.
Других решений пока нет …