怎么生成代理/存根dll(Microsoft Visual Studio 2005)

 新世纪想自己动手敲下〈COM技术内幕〉中的一些例子(其实是自己按照它的思路实现自己的想法)可真不容易啊。这不,实现一个COM跨进程通信的组件可把我郁闷坏了。实现什么功能都是得自己动手制作Makefile文件,汗。。。。都什么年代了,有多少人会这个啊(牛人除外)。到处都是集成开发环境IDE。这也难怪,〈COM技术内幕〉都绝版了。身边又没有一个会COM的,更别说高手了,诶。。还是那句话:一步一个脚印啊。。。。。高手应该都是这样产生的吧!呵呵。。看下文:

          由于今天感觉很困,又挺晚的,在这里我就先介绍下怎么生成代理/存根dll,因为要进行跨进程通信,这个是前提撒。开发环境——Microsoft Visual Studio 2005

1.编译idl 文件,生成*_i.h*_i.c*_p.cdlldata.c 四个文件。

*.h为接口说明头文件;

*_p.c为接口代理和存根的实现文件;

*_i.c为定义所有GUID描述符的文件;

dlldata.c包含代理/存根程序的入口函数及类厂所需的数据结构。

要是我写到这里就搁笔了,我想你肯定会拿砖头砸我,说了等于没说,什么编译idl文件啊,用VB或DELPHI,还是TC编吗?写个Makefile文件也一样可以编译啊。要讲就得说明白,对不。

在Microsoft Visual Studio 2005中创建Win32 console application空工程,注意是空的。然后添加一个新文件:add->NewItem,在出来的对话框中在code下新建一个midl file(.idl)文件,这样就够了。至于在.idl文件中写什么,这就不用我说了吧!

2。在Microsoft Visual Studio 2005中创建Win32 console application 空工程,类型为DLL。

3。新建一个.def文件(要是不知道怎么建,可以参考我前面的文章,里面有详细介绍)。格式如下:

       

LIBRARY      "Proxy.dll"

 

EXPORTS

    DllGetClassObject       @1  PRIVATE

    DllCanUnloadNow         @2  PRIVATE

    GetProxyDllInfo         @3  PRIVATE//注意这个是用于跨进程通信的

    DllRegisterServer       @4  PRIVATE

    DllUnregisterServer     @5  PRIVATE

4。将第一步中生成的*_i.h*_i.c*_p.cdlldata.c四个文件添加到工程中

5。设置工程编译属性:

1)在Preprocessor Definitions 中加入:REGISTER_PROXY_DLL

2)在Linker->Input->Module Definition file指定模块定义文件路径:*ps.def;

3)在 Linker->Input->Additional Dependencies中加入:rpcrt4.lib uiid.lib

6。好了,就OK了。剩下就编译了。

          不过按照常理来说都会提示如如下错误:

fatal error C1189: #error :  You need a Windows 2000 or later to run this stub because it uses these features:

别急,很简单就搞定的:只要Preprocessor Definitions加入:_WIN32_WINNT=0x0500就OK了。可能有些人会问了Preprocessor Definitions是什么啊。呵呵!很正常。别急。它是个编译设置选项,在工程属性的C/C++下面,自己找找吧。

           好了,去debug下面去找你的代理/存根dll吧。呵呵。最后提醒下,别忘了注册代理/存根dll哦,怎么注册,我在以前的文章中也提过,自己找找吧。累,该睡觉了,这只是实现跨进程通信的一下步,剩下的下次有时间再贴吧,明天还有课呢。。已经逃了好几节了,不能再跑了,要不挂了,哈哈。。。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值