读书人

工程分割为bpl包或dll的有关问题

发布时间: 2013-01-08 14:02:14 作者: rapoo

工程分割为bpl包或dll的问题
我手上有几个项目,其中有一个有三百多个form,每次编译时都要花N多时间来linking..............
而且程序运行时,暴吃内存。我在网上找了两天,很多人提到把工程分割成bpl或dll,分割后,又涉及到一个数据库连接的问题,我想主程序登陆时有一个数据库连接,其它的dll或bpl都使用这个连接而不用新建连接。
网上得到的答案是:建立一个共享用的bpl,用它来连接数据库,然后在dll中均引入这个bpl,这样,加载的dll或bpl就只有一个连接的session连接到数据库了。
但网上的大多是delphi版的(delphi俺不太懂,照着上面的做出来的运行起来总是有问题),所以想请哪位能告诉我CB6里这样的实现方法,谢谢。
tdhome1203@126.com
[解决办法]
以前的帖子不都回答你了么,做成bpl最简单,啥都不用改.
[解决办法]
他的做法就是将数据库的操作交由bpl,其他由dll来做,包的调用和dll差不多,只是如果是动态调用包需要LoadPackage UnLoadPackage函数,具体的需要你自己来做了。
[解决办法]
你把它做成组件,然后添加到某个包里就可以了,就像BCB自己做的一样。
[解决办法]
用法DLL基本一
//加BPL包
unsigned int fHandle = LoadPackage(BplName);
if(fHandle)
{
//行包中的函
typedef PACKAGE void __stdcall TMyFun(void);
TMyFun* MyFun= (TMyFun*)GetProcAddress((HINSTANCE)fHandle, "MyFun");
if(MyFun)
MyFun();
//建包的,需要include相文件。直接生成Form ,共用全局量,比用DLL 方便多了。
TMyForm *pForm = new TMyForm(this);
pForm->MyADODataSet->Connection = ADOConnection1 ; //也可以在加包指定共用的接
pForm->ShowModal();
delete pForm ;
}
//不用了就去掉,去掉前要把所有包查的例都delete,否引起常。
::UnloadPackage(fHandle );

[解决办法]
你好啊, PPower 不是回复你这个问题了吗.
多用心看看,学习这个是要有一点时间的,但是不是很长.
你用BCB那些BUTTON FORM ADO大部分都是这样来的.


你要的例子其实BCB自己就有的.就在的安装目录examples下就有. 另外一个地方ShellCtrls目录.你在BCB的安装目录下搜一下

读书人网 >C++ Builder

热点推荐