把一个程序拆成几个DLL!!!

时间:2022-02-27 19:52:41
我一开始写程序时没有规划好...现在要把一个程序拆成几个DLL,但是总是遇到很多麻烦事......
所有请问一下,是不是任何一个程序都可以拆成几个DLL的呢?(这么问是因为如果不可以那我就不白费力气了)
我的程序主要是对话框的调用,有很多资源,可以拆的吧?
如果要分的话,有什么特别重要的要注意的呢???
我想用的是loadlibrary显示调用,但是看的书上只有调用函数的例子.

不好意思,动态链接库没学多久,还有好多不懂呀....可不可以把DLL看作是动态加载的代码呢?还是有其它很多的限制?比如...是不是只能调用其中的函数?(有对话框就会有类嘛,唉还有消息,真是手忙脚乱呀...)

请大侠们帮帮我吧!!!
!!!!!!!!!!!!!!!!!!!
谢谢谢谢!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!

6 个解决方案

#1


DLL主要是为了模块化,但你的界面和消息什么的最好还是放在主程序中。

#2


资源最好放在一个dll或者说一个模块里,不要这里一点那里一点,增加出错的几率。。。
用loadlibrary导入,函数用Getprocaddress,资源用SetResourceHandle

#3


在同一个解决方案中可分为几个工程,将模块放到一个工程中生成为DLL,EXE工程可以调用DLL工程,不必用Loadlibrary。

#4


我现在最大的问题其实是这样的:
我原来在主窗口(是个对话框)里双击会新建一个对话框,这两个对话框都要响应一些消息的,并且都有右键菜单
我想把它们分开来,把子对话框放在DLL里(包括子对话框的一切相关的东西),这样主窗口双击时就动态加载DLL产生对话框,
但是他们两个之间又有很多数据互相联系,所以麻烦的咧~~~~~
并且子对话框如果按我原来的用无模式对话框的话,它执行完后马上就退出了.
但如果用模式对话框的话,子对话框存在的时候主窗口又无法响应........

唉...........

#5


按楼主的意思,可以这样实现:作两个dll,每个dll中建一个类(类A,类B),所有功能在类A中实现或也可建立与类A建立关联的类A'实现其它功能(看需要可建多个类),在主程序中,定义类A,类B的成员,通过类A的成员、类B的成员来访问dll中的函数实现功能。同理也可实现类A、类B之间的交换数据。致于消息传递可以通过主程序中的winproc函数接收消息,也可以视需要,在窗口之间传递消息。

#6


TO  xxfyath(〖水滴石穿〗)

谢谢啊!不过我已经在做的时候放弃了这种设想,改用其它方案了。(比较遗憾的说)
最近比较忙。过阵子放假了再去试试你的做法吧:)   (不过还有些看不大懂)
还有我用的是MFC写的,没有winproc函数呀。
另外那个模式与无模式的问题也是头疼之一。

谢谢大家!先结了吧。

#1


DLL主要是为了模块化,但你的界面和消息什么的最好还是放在主程序中。

#2


资源最好放在一个dll或者说一个模块里,不要这里一点那里一点,增加出错的几率。。。
用loadlibrary导入,函数用Getprocaddress,资源用SetResourceHandle

#3


在同一个解决方案中可分为几个工程,将模块放到一个工程中生成为DLL,EXE工程可以调用DLL工程,不必用Loadlibrary。

#4


我现在最大的问题其实是这样的:
我原来在主窗口(是个对话框)里双击会新建一个对话框,这两个对话框都要响应一些消息的,并且都有右键菜单
我想把它们分开来,把子对话框放在DLL里(包括子对话框的一切相关的东西),这样主窗口双击时就动态加载DLL产生对话框,
但是他们两个之间又有很多数据互相联系,所以麻烦的咧~~~~~
并且子对话框如果按我原来的用无模式对话框的话,它执行完后马上就退出了.
但如果用模式对话框的话,子对话框存在的时候主窗口又无法响应........

唉...........

#5


按楼主的意思,可以这样实现:作两个dll,每个dll中建一个类(类A,类B),所有功能在类A中实现或也可建立与类A建立关联的类A'实现其它功能(看需要可建多个类),在主程序中,定义类A,类B的成员,通过类A的成员、类B的成员来访问dll中的函数实现功能。同理也可实现类A、类B之间的交换数据。致于消息传递可以通过主程序中的winproc函数接收消息,也可以视需要,在窗口之间传递消息。

#6


TO  xxfyath(〖水滴石穿〗)

谢谢啊!不过我已经在做的时候放弃了这种设想,改用其它方案了。(比较遗憾的说)
最近比较忙。过阵子放假了再去试试你的做法吧:)   (不过还有些看不大懂)
还有我用的是MFC写的,没有winproc函数呀。
另外那个模式与无模式的问题也是头疼之一。

谢谢大家!先结了吧。