CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

我在EXE里隐式加载一个DLL,DLL导出了类和函数,主EXE可以调用,可是我想同时反过来DLL调用EXE的类和函数,我该怎么做呢???

楼主zhangyiabc(zhangyiabc)2004-12-02 17:45:48 在 VC/MFC / 进程/线程/DLL 提问

这个EXE和DLL在一个进程,也在一个线程里面。  
  现在只能单向操作,EXE调DLL的类和函数。大多数情况也是这么用的。  
  我反过来调用。大家有没有好的方法。  
  一、不用EXE向DLL传主APP指针,再从DLL向EXE发消息的方法。  
  二、也不用将EXE注册成COM或automation的方式。  
  大家有没有其它更好的方法啊?我可不可以直接在DLL里面连接EXE的LIB文件。这样相互引用好象是有问题的。就象先有鸡还是先有蛋的问题。 问题点数:20、回复次数:31Top

1 楼gwinner(动力引擎)回复于 2004-12-02 17:57:48 得分 0

用回调函数。  
   
  用CallBack在MSDN里查一下,会有启发的Top

2 楼zhangyiabc(zhangyiabc)回复于 2004-12-02 18:02:00 得分 0

用回调也不是在DLL里进行主动调用啊?我的理解是这样的  
  能不能主动调EXE的函数或类实例?  
  Top

3 楼zhangyiabc(zhangyiabc)回复于 2004-12-02 18:14:45 得分 0

我还想调主EXE的类实例的成员函数。有没有更好的方法呢?谢谢上面那位朋友的回答Top

4 楼zhangyiabc(zhangyiabc)回复于 2004-12-02 19:38:48 得分 0

有没有朋友有好的办法啊:)?Top

5 楼sdsuper(泊舟)回复于 2004-12-02 21:12:37 得分 0

有这样的想法就是不对的。Top

6 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-12-02 21:27:03 得分 0

一般就是回调了,楼主的要求...Top

7 楼wangjia184(我就是传说中的。。。。。。SB)回复于 2004-12-02 21:33:12 得分 0

/......Top

8 楼hifan(Kee)回复于 2004-12-02 22:04:17 得分 0

好像不行的吧~!  
  /?Top

9 楼zhangyiabc(zhangyiabc)回复于 2004-12-02 23:40:30 得分 0

回调就是把函数指针传给DLL了嘛。而且如果是类还必须是静态的函数才能传。太死板了Top

10 楼gwinner(动力引擎)回复于 2004-12-03 11:15:28 得分 0

又不让用COM的连接点!偶没辙了Top

11 楼aoosang(智慧的鱼)回复于 2004-12-03 16:03:36 得分 0

好像没有合适的方法,楼主的想法很好,只有敢于怀疑才能进步Top

12 楼Quinn(稻草人)回复于 2004-12-06 19:38:46 得分 0

用DLL调用EXE的类和函数的做法比较不好,我建议你改变思路,重新设计算法结构.Top

13 楼zhangyiabc(zhangyiabc)回复于 2004-12-07 13:23:29 得分 0

请教大家,如果这样思路不好,那我要从EXE导出类或函数应该怎么办啊?Top

14 楼moloto2004()回复于 2004-12-07 16:06:10 得分 0

做成DLL导出吧Top

15 楼zhangyiabc(zhangyiabc)回复于 2004-12-08 11:06:00 得分 0

呵呵,我已经把这个框架拆了七个DLL了,如果做成DLL导出了,那主EXE都没有了。我想的就是把主EXE的一些视图控制的方法公开出来。因为结合很紧密,我不想用COM的方法,   事实上COM的automation方法我也实现了。我只是想用VC的导出方法,这样和我的工程结合会更紧些。  
  非常感谢大家的热心,欢迎继续讨论:)Top

16 楼elabs(洋洋)回复于 2004-12-08 22:42:11 得分 0

其实我也有这样的疑问,想做一个EXE,它能输出对外调用的方法,但是EXE不被执行起来输出方法无法使用,不知道有没有这样的方法。Top

17 楼yuanarea(Sail before)回复于 2004-12-15 04:26:49 得分 0

关注,学习!!顶!!!这次不要分了。。。。。Top

18 楼msm(msm)回复于 2004-12-15 09:24:13 得分 0

高手Top

19 楼jackieji(一个人走...)回复于 2004-12-15 09:48:18 得分 0

关注Top

20 楼vctool(乔峰)回复于 2004-12-15 13:51:44 得分 0

可以的,EXE也可以导出函数的,在DLL中得到主程序的HANDLE,然后用GETPROCADDRESS就可以了.Top

21 楼xrenwu(卖火柴的大男孩)回复于 2004-12-15 15:05:50 得分 0

高手,顶  
  Top

22 楼pi31415926(免战牌)回复于 2004-12-16 15:08:03 得分 0

把所需要的视图类用DLL导出来,EXE或别的DLL都可以用啊!不是什么高明办法,不过这么做最省事!Top

23 楼longfeisky(龙飞)回复于 2004-12-16 16:49:38 得分 0

学习,要是注入了其他进程,也可以用GETPROCADDRESS吗?字符串会不会存在就不知道了Top

24 楼zhangyiabc(zhangyiabc)回复于 2004-12-17 10:56:11 得分 0

好已经导出很多了不过EXE真的可以导出么?怎么定义?还是用DEF或者是API_EXT_EXPORT?Top

25 楼Juchiyufei(三更半夜我送你回家.总统也许我做不到.今生难得的遇见你,我们就应该在一起.....)回复于 2004-12-17 11:41:15 得分 0

 
   
  你可以向主线程发送消息,  
  或  
  声明一个全局变量使两个工程都可以访问它Top

26 楼zheng_rui(我也是猪)回复于 2004-12-17 14:41:19 得分 5

用纯虚类Top

27 楼sjhunter()回复于 2004-12-17 15:00:46 得分 15

呵呵,被抢先了,用纯虚类,在EXE和DLL里都定义,然后在EXE里继承这个类,将需要的纯虚函数都实现了,DLL暴露一个函数,EXE用这个函数将自己的一个类实例的指针传给DLL,就可以了,我以前项目里用过Top

28 楼pi31415926(免战牌)回复于 2004-12-20 07:53:07 得分 0

高,楼上实在是高,这样是不是可以在不同语言中调用导出的类啊?比如在Delphi里调用VC编译的DLL或EXE里导出的MFC扩展类?Top

29 楼sjhunter()回复于 2004-12-20 09:09:46 得分 0

没试过,我难得不用C++Top

30 楼sinall()回复于 2004-12-20 11:30:58 得分 0

所谓“虚基类”指的还是需要exe把类实例的指针传给dll  
  其实,这个方法就是COM!!!  
   
  那么,我有个更好的方法:  
  楼主把COM不叫COM,然后用COM的那一套就可以实现了。  
  你所说的dll主动调用exe的方法,其实就是这样的了。Top

31 楼zhangyiabc(zhangyiabc)回复于 2004-12-20 12:48:37 得分 0

好办法!Good   idea!Top

相关问题

  • DLL导出函数
  • DLL导出函数问题加密?
  • dll导出函数该怎么写???
  • dll中导出函数的问题。
  • 导出函数.
  • 怎样在dll的导出函数中调用客户中的其他函数??
  • 如何在DLL中导出一个结构的构造函数??
  • DLL中函数的导出次数问题?
  • 如何在DLL中导出正常函数名
  • 为什么我的dll文件不能够导出函数:

关键词

  • 函数
  • dll
  • 指针
  • 导出
  • 调用
  • 类
  • 方法
  • 实例
  • exe
  • 指针传给

得分解答快速导航

  • 帖主:zhangyiabc
  • zheng_rui
  • sjhunter

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo