转载请标明是引用于 http://blog.csdn.net/chenyujing1234
解读文章:
http://blog.csdn.net/tttyd/article/details/6237904
这里和我的另一篇文章相比较来解读:
http://blog.csdn.net/chenyujing1234/article/details/7373283
服务端:
不同点有两个:
1、创建方法可以参考我方法一样,只不过作者把它创建为exe方式了。如果是EXE,那么怎么用regsvrce.exe来注册呢
2、编译出错的处理方法不一样:
在原文中讲到"需要定义一些宏才能编译通过。另外定义一个 def 文件",所以增加了ServDemoPS工程。
// dlldata.c 的包装
//#ifdef _MERGE_PROXYSTUB // 合并代理存根(stub) DLL
#define REGISTER_PROXY_DLL //DllRegisterServer 等
#ifndef _WIN32_WCE
#define _WIN32_WINNT 0x0400 //对于 WinNT 4.0 或安装了 DCOM 的 Win95
#else
#define WIN32
#endif
#define USE_STUBLESS_PROXY //仅当使用 MIDL 开关 /Oicf 时定义
#ifndef _WIN32_WCE
#pragma comment(lib, "rpcns4.lib")
#endif
#pragma comment(lib, "rpcrt4.lib")
//#define ENTRY_PREFIX Prx
#include "dlldata.c"
#include "ServDemo_p.c"
//#endif //_MERGE_PROXYSTUB
但在我的原文里也
提到了编译出错的情况,那时是通过
后把Add.h里的
#ifndef _CE_DCOM
DECLARE_REGISTRY_RESOURCEID(IDR_ADD)
#endif
改为
//#ifndef _CE_DCOM
DECLARE_REGISTRY_RESOURCEID(IDR_ADD)
//#endif
来修改的。
客户端:
不同的地方是调用的方法不一样:
在原文中有"EventHandler.h,协助客户端在不使用 ATL 情况下接受 COM Server的事件",其实代码里并没有实现COM Server的事件的接收,而只是主动调用,
在原文中它的用法是:
#import "..\ServDemo\CE6_SDK (ARMV4I)\Debug\ServDemo.exe"
using namespace ServDemoLib;
#include "EventHandler.h"
using namespace TEventHandlerNamespace;
typedef TEventHandler<IAlgorithm,_IAlgorithmEvents> EventHandler;
IAlgorithm,_IAlgorithmEvents未去定义,但它是通过ServDemo.exe引进来的.
而在我的文章中是通过sink方法,查看Sink.h
显然他的方法更简单一点。