首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

BCB6中如果大规模使用DLL解决方案

2012-02-24 
BCB6中如果大规模使用DLL现在做一个项目,代码规模越来越大了,目前存在两个问题:1、编译速度慢;2、代码维护困

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,提供一些公用的方法!
[解决办法]
软件设计和实现最好有明确的目的和方法!

不然做成大杂烩也不是一件很难的事情!

欢迎下面继续拍砖!

热点排行