在引入com时,经常会出现名字冲突的问题:
例如:
#import "c:/program files/arcgis/com/esriSystemUI.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids, exclude("OLE_COLOR", "OLE_HANDLE")
这个对象包里有一个icommand会冲突,解决的办法有三种
1、如果你的程序中不会用到这个接口
可以在exclude加上如
#import "c:/program files/arcgis/com/esriSystemUI.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids, exclude("OLE_COLOR", "OLE_HANDLE","ICommand")
2、也可以重命名
如
#import "c:/program files/arcgis/com/esriSystemUI.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids, exclude("OLE_COLOR", "OLE_HANDLE") ,rename("ICommand","xxxxx")
3、将no_namespace去掉,
#import "c:/program files/arcgis/com/esriSystemUI.olb" raw_interfaces_only, raw_native_types, named_guids, exclude("OLE_COLOR", "OLE_HANDLE")
但是你的程序如果使用这个库里的接口时,需要加上esriSystemUI域,例如esriSystemUI::ICommandPtr pcmd;