我不编译ATL的Proxy/Stub工程,ATL组件也能用,为什么?

ooto 2013-08-28 10:15:11
我用VC2010新建一个ATL的工程,产生两个proj,一个是组件本身,一个是PS工程。
我从解决方案视图里面删除那个名称后缀是PS的工程,只编译ATL组件的这个工程,没有问题。

我再建立一个控制台工程来调用这个组件,也没有问题。

我的疑惑是:
(1)既然我都没有编译生成proxy/stub的工程,为什么仍然可以执行调用com组件呢?
(2)什么情况下必须要这个xxxPS的dll才能运行成功,否则com组件调用会失败? 换句话说,什么情况下xxxPS.dll才是必须的?

谢谢。
...全文
78 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ooto 2013-08-28
  • 打赏
  • 举报
回复
引用 1 楼 fishion 的回复:
http://baike.baidu.com/link?url=Mpf3dBNlPo5dZJgfSjKaHD2De0DzRZE4kkML4lll4C-4V2XY422_QqShDkqFRjTqRmR3dth2g2mdUDZdgr7Pm_ 如果是EXE服务类型的组件,调用时就会不在同一个进程内,而各进程的内存空间是独立的
而且,这个帖子里面说道: 怎么使用代理和存根 对于你来说代理和存根的使用是透明的,你根本不用去关心如何使用他们,com库会知道怎么做。 既然我们不用关心P/S如何工作,为什么还要生成一个PS的工程,这样我们就可以修改P/S的行为了,哪里还有所谓的"透明"可言呢? 谢谢。
fishion 2013-08-28
  • 打赏
  • 举报
回复
记得哪本书里说是可以dll可以用服务的形式注册在远程服务器上的,然后用CoCreateInstanceEx方式调用,了解下DCOM
ooto 2013-08-28
  • 打赏
  • 举报
回复
引用 1 楼 fishion 的回复:
http://baike.baidu.com/link?url=Mpf3dBNlPo5dZJgfSjKaHD2De0DzRZE4kkML4lll4C-4V2XY422_QqShDkqFRjTqRmR3dth2g2mdUDZdgr7Pm_ 如果是EXE服务类型的组件,调用时就会不在同一个进程内,而各进程的内存空间是独立的
可问题是,我建立的ATL工程指明了生成dll啊,也就是同一个进程内的调用。为什么这样还要代理和存根呢? 谢谢。
fishion 2013-08-28
  • 打赏
  • 举报
回复
http://baike.baidu.com/link?url=Mpf3dBNlPo5dZJgfSjKaHD2De0DzRZE4kkML4lll4C-4V2XY422_QqShDkqFRjTqRmR3dth2g2mdUDZdgr7Pm_ 如果是EXE服务类型的组件,调用时就会不在同一个进程内,而各进程的内存空间是独立的
ooto 2013-08-28
  • 打赏
  • 举报
回复
自己再顶一下!求回答!

3,248

社区成员

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

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