调用COM接口函数时,找不到CLSID

nearwu 2012-10-27 09:55:53
1.#import esriCarto.tlh文件后,声明变量
esriCarto::IDataLayerPtr m_DataLayer;

2.按照一般的COM接口的规则,CLSID:CLSID_DataLayer;IID:IID_IDataLayer;但esriCarto.tlh文件内只有IID_IDataLayer没有CLSID_DataLayer,所以就没法按照如下方法调用了:
HRESULT hr;
hr=CoCreateInstance(esriCarto::CLSID_DataLayer,NULL,CLSCTX_INPROC_SERVER,IID_IUnknown,(void **)&pUnk);
pUnk->QueryInterface(esriCarto::IID_IDataLayer,(void**)&m_DataLayer);
pUnk->Release();
有没有解决的办法?或者其它的方法?
...全文
258 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nearwu 2012-10-30
  • 打赏
  • 举报
回复
一个CLSID可以对应多个接口,一个接口也可以对应多个CLSID。
nearwu 2012-10-28
  • 打赏
  • 举报
回复
__uuidof(esriCarto::DataLayer)也不行,现在的问题是,有IDataLayer接口,却找不到DataLayer这个声明,所以也就没有CLSID_DataLayer, 有没有方法根据IDataLayer或IID_IDataLayer 找到对应的CLSID?
nearwu 2012-10-27
  • 打赏
  • 举报
回复
我是按照LIB ID导入的
//import esriCarto.olb
#import "libid:45AC68FF-DEFF-4884-B3A9-7D882EDCAEF1" raw_interfaces_only raw_native_types named_guids exclude("OLE_HANDLE", "OLE_COLOR" )
youyilu3 2012-10-27
  • 打赏
  • 举报
回复
import的用__uuidof
nearwu 2012-10-27
  • 打赏
  • 举报
回复
恩,直接就不识别CLSID_DataLayer, 定义了8个变量,按照CLSID命名的规则,其中5个可以通过,3个通过不了。
healer_kx 2012-10-27
  • 打赏
  • 举报
回复
编译不过?还是?

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧