郁闷啊!请问bpl中能不能实现动态加载后调用其中的自定义类与函数?并且不带包编译!

feesees 2009-10-25 11:54:02
我在网上找到的都是导出窗体类tform.如果要实现bpl包不编译进exe.就得以带包方式编译.一些我不想带包发布的包比如vcl70.bpl就得从system32中找出来.发布程序的时候一起发布.

为啥不能把我想共享的bpl共享.其它不想共享的编译进exe去?比如我写了一个test.bpl.发布程序的时候.只须要发布我这个test.bpl.其它的全部进exe.但现在好像不行.得去system32中找bpl.如果用到了raize组件.那还得去找.

上边是在build with runtime package打勾的时候.bpl列表中有我的test.bpl的时候

我又找其它办法.后来发现bpl可以动态加载.我试了loadpackage.但是要是想获得注册的类.那还是只有把build with runtime package打上勾.那这样.我觉得还不如把这个bpl加入到那个runtime package列表中去.动态加载有啥意思!!!还不如用上边的方法方便.但要不这样.getclass就得不到类...




其实我的目的就只有一个.我想共享的bpl(或者说带包编译)就共享.不想的.全部编译进exe.不管在runtime package列表中编辑.还是loadpackage.哪位大侠有方法.求你了.给我说一下.我刚学delphi不久......
...全文
128 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
feesees 2009-10-25
  • 打赏
  • 举报
回复
汗........我看也只有这样了.要么全共享.要么全进exe.....

要是delphi能改进成那样就好了.又或许是我不习惯的问题.我从c系过来的.对d系的特性不太了解..
iamduo 2009-10-25
  • 打赏
  • 举报
回复
顺便说一下。bpl是可以传递引用的。
如上图。
你的bpkTest里,如果需要rtl70(显然是废话),就算是主程序不写出来。也是会变成Link状态。
iamduo 2009-10-25
  • 打赏
  • 举报
回复
你的心情我理解。
我前一段日子也提过类似问题。
结果就是,要么全bpl,要么一个exe。
到目前为止,还没有好的解决方案。
feesees 2009-10-25
  • 打赏
  • 举报
回复
是rtl70...真可恶.编辑不了贴子.
feesees 2009-10-25
  • 打赏
  • 举报
回复
这问题困扰我好几天了.或许是我对Delphi的特性不了解.不过应该可以这样才对...上边那个到没有装delphi的机子会包错.少了vcl70.bpl
feesees 2009-10-25
  • 打赏
  • 举报
回复
不知道你说是的不是这个意思.

但是编译后.其它的比如vcl70.bpl还是以共享的方式存在了.发布的时候也要从system32中找出来.
请看图.

大小该300多一点kb才对.
如果不打勾.那我就不能实现更新bpl就更新了程序.那更新一下Bpl得重新编译exe了..我理解错了还是?能不能说具体点.大侠..
simonhehe 2009-10-25
  • 打赏
  • 举报
回复
比如你的包A.bpl
在RunTime packages中只写选择A就行
simonhehe 2009-10-25
  • 打赏
  • 举报
回复
oo 不用牢骚

带包问题, 只需要在RunTime packages中写上不带包编译的BPL就可以, 其他的删掉
dqlihb 2009-10-25
  • 打赏
  • 举报
回复
我学很久了,
和你的问题是一样的,

不想带包

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧