应用程序和DLL同时“Build with runtime library”,

eFainter 2014-12-20 10:48:31
前几天发了一个贴“主程序调用DLL,嵌入到主程序的PANEL,运行是有时候出现USER32.DLL错误”
http://bbs.csdn.net/topics/390953827

有兄弟回复应用程序和DLL同时“Build with runtime library”, 这个什么意思,该怎么操作 ?谢谢
...全文
136 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
aniugee 2014-12-23
  • 打赏
  • 举报
回复
1. 主控程序和各插件工程中,BUILD WITH RUNTIME PACKAGE都勾选上。整个程序运行的时候,保障了所有的VCL对象只有唯一的一份,杜绝了VCL对象相互之间发生冲突的可能性。此种方式最为稳定和安全,建议使用此方式。但此种方式有一个缺点:发布程序的时候,DELPHI RTL包,第三方控件的BPL运行时包要一起打包发布,否则程序将不能运行。此种方式编译出来的EXE/DLL/BPL一般体积会比较小,往往只有几百K,因为运行时包没有编译进来。 2. 主控程序和各插件工程中,BUILD WITH RUNTIME PACKAGE都不勾选上。整个程序运行的时候,同一个VCL对象可能存在有多份,容易产生对象访问的冲突。在使用一些三方控件的时候,更加容易发生冲突。此种方式也可行,一般在装载DLL的时候需要传递主控程序的APPLICATION给DLL(要保存好DLL原来的APPLICATION),在DLL释放的时候则要还原DLL原来的APPLICATION, 否则在释放DLL的时候会报“非法访问内存”的错误。此种方式也有一好处:发布程序的时候,DELPHI RTL包,第三方控件的BPL运行时包不要打包进来。此种方式编译出来的EXE/DLL/BPL一般体积会比较大,往往有几M,因为运行时包都编译进来了。
不得闲 2014-12-23
  • 打赏
  • 举报
回复
就是带包编译,编译之后,你需要在其他电脑上带上你带包的那几个包才能运行,否则是运行不起来的
lyhoo163 2014-12-21
  • 打赏
  • 举报
回复
“Build with runtime library”这是C++中的提法。
Delphi的提法:“Build with runtime packages”

意思就是:你在编译EXE和Dll时,使用IED中选择Build with runtime packages,达到编译的EXE和Dll,都“创建时运行动态包(库)”。



建议:如果你采取Build with runtime packages,EXE和Dll都不带包编译,运行时要将包文件,拷贝到相关目录。
eFainter 2014-12-21
  • 打赏
  • 举报
回复
兄弟,救命啊

5,388

社区成员

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

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