ATL中如何使用旧的IDL文件

fd7893 2010-10-25 11:18:22
场景是这样的:
现有系统是一个Client 和多个 server构成的系统,client 调用 server提供的一组COM接口实现某些功能。但由于业务变更,原来的server已经不能满足需求,此时需要更换server。但由于并没有server的源码,必须重新开发。为了不影响client的工作,新server必须与原server接口相同;所幸,我们找到了原server开发时使用的X.idl和其编译生成的文件。这样必须以原来的*.idl 为基础开发。

于是问题来了。我试图将这个原有的idl引入一个新建的project中,但无论我如何尝试,都无法成功,请问:如和将一个已存在的idl应用于新项目中呢?

注意两点:
1. 旧IDL中的借口是不能动的,包括名称、参数、uuid等等
2. 在整个工程中,同时有多个项目需要引用旧IDL文件,所以旧IDL文件不能被更改。

说明:这还是我之前发的另一个贴的问题。关键是没搞出来,也没搞明白。原帖地址如下:

http://topic.csdn.net/u/20101022/14/7228f8e2-245c-451b-9638-a561d11e5154.html?1375777695

其中:wangchaoyu2001 和 libinfei8848 的回复对我启发很大,wangchaoyu2001 的工程量比较大还没试,libinfei8848 不知是细节不对还是别的什么原因,总之也没搞出来(我是以新IDL为主做的)。

现在我很郁闷,所以一定要搞明白是怎么回事,具体做法,原理等等。
希望各位畅所欲言,本人在此先谢过。
如果各位看重分数,那咱分数也不少给,本人虽然最多只能发100分,但各位也不要怕,不够分咱再开贴!直到把问题搞明白为止。
...全文
198 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongkun18 2010-11-19
  • 打赏
  • 举报
回复
问题不难.如楼上所说.
修改的时候,参照就的idl的类 以及相关接口 ,在工程A中添加相对应的接口.(其实就是ATL的简单对象)
针对每个简单对象都会有一个对应的C**类,并且c**:I**;
参考旧的idl中的I**,看它有哪些接口函数,相应的理由Atl向导就可以添加了.
至于如何添加:在类视图中,找到I**,右键添加函数(属性).这样在对应.h 和 .cpp就有该函数的声明和定义,并且在A中的idl也有该函数的声明.

编译的时候,建议每次添加一个接口都编一次idl,减少错误.
visualassist4680 2010-11-18
  • 打赏
  • 举报
回复
创建新工程,按照旧 idl 声明接口,然后替换 所有的guid,
ysjyniiq 2010-11-15
  • 打赏
  • 举报
回复
所你所说的旧的*.idl和*.h,一定要两个,缺一不可,放到你的工程里面是。
打开你的工程的idl文件,在
import "ocidl.idl";下面添加
import "yourOldName.idl";
shenhailideyu 2010-11-14
  • 打赏
  • 举报
回复
楼主怎么弄出来的啊?赶紧发个贴总结一下吧,谢啦
charleswangchaoyu 2010-10-26
  • 打赏
  • 举报
回复
顶一下吧,拿了分也没帮上忙.
fd7893 2010-10-26
  • 打赏
  • 举报
回复
感谢诸位,已经搞出来了,回头等我把手头这点儿事忙完,总结一下发出了,大家可以讨论讨论
WheatField 2010-10-25
  • 打赏
  • 举报
回复
你新作一个组件,在新组件中调用原来旧的组件。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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