BCB6中如果大规模使用DLL
现在做一个项目,代码规模越来越大了,目前存在两个问题:
1、编译速度慢;2、代码维护困难。
我想把它们分成功能模块封装进DLL里,可是不知道在DLL中如何方便使用对象,特别是窗体。
也就是说:
1、在调用程序里不能直接访问窗体及其上的控件、属性、成员变量等等;
2、我想要某些窗体在程序启动时就自动跟着被创建,但把它放入DLL后不知如何才能做到这一点;
3、如果每次需要访问窗体时都new出窗体,我想这样速度慢,还会容易造成内存碎片(我的程序很频繁地用到该窗体);
4、如果在DLL中设一个函数,在程序启动后先调用它以便new出窗体,又不太好管理,代码规模大了就忘记谁对谁了;
以下是我尝试过的方法,至少在BCB6+WinXPSP2中行不通,这样做的话就连主调程序的窗体都没法显示出来
#include "CfrmDll.h "
HINSTANCE hInstance;
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
int nRetVal=1;
switch(reason)
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
case DLL_PROCESS_ATTACH:
hInstance=hinst;
frmDll=new TfrmDll((TComponent*)handle);//在DLL被装入时new出窗体
break;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
case DLL_PROCESS_DETACH:
delete frmDll;//在DLL被释放时delete窗体
break;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
case DLL_THREAD_ATTACH:
break;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
case DLL_THREAD_DETACH:
break;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
return nRetVal;
}
各位高手、兄弟、姐妹,如果你们有什么好的方法或发现了我的什么地方不对的话,请指出,分不够可以再加
或QQ:383988781
Email:mgmyu@163.com
真诚希望与大家交流,知无不言,言无不尽
[解决办法]
嗯。分不够这句话是对了。。其次是我也想知道答案。。我的规模也越来越大了。。。快乱套了
帮顶.
接分先
[解决办法]
可以把功能模块变成组件放到包里。
[解决办法]
一些子窗体模块,或者处理事务的类,都可以放到Dll中。
[解决办法]
组件包(Package)也就是*.bpl,其实也是Dll,所以按宋大哥的方法,将功能模块写成组件,编译时Build with runtime packages,也可以大大减轻Exe文件的体积。
[解决办法]
一个 Exe 文件作为平台,多个 DLL 文件作为模块。
请看我的 Blog
http://blog.csdn.net/sczyq/archive/2007/03/20/1534977.aspx
[解决办法]
学习 帮顶
[解决办法]
关注
[解决办法]
多人合作編程。逐漸成為現代編程者要面對的問題。代碼組織好壞,已經直接影響整個系統。這問題可不是小問題:
既要模塊間能良好隔離,又要模塊間能無縫接合,還要是每個模塊都是易學易用的。模塊整體是可堆疊可裝卸的(可配置易擴展的),還要考慮重用性及維護性指標。
做出一個良好的系統真是很不容易的。小系統與大系統相差往往也在這裡了。小應用為了速度可以不分模塊的,中型系統就需要可堆疊的模塊,大型系統一般就要對模塊進行分層管理了。
[解决办法]
呵呵 支持 关注一下
[解决办法]
mark
[解决办法]
用一个主类来传递一些公用信息,比如数据库的联系信息,用户登录的信息等,然后一些模块用dll,最好有一个基础的dll,提供一些公用的方法!
[解决办法]
软件设计和实现最好有明确的目的和方法!
不然做成大杂烩也不是一件很难的事情!
欢迎下面继续拍砖!