最近研究delphi的runtime package,包的程序发布每次都要带上vcl.bpl和rtl.bpl文件等,不然为提示找不到文件,一直困扰我很久,今天终于明白了,原来vcl.bpl和rtl.bpl异常是调用的包中抛出的,包中引用了vcl.bpl和rtl.bpl文件的dcp文件,运行时需要动态加载了bpl。造成的找不*.bpl
解决方法:
1.在程序使用包少时,可将vcl.bpl和rtl.bpl包中引用增加到本包中,并删除本包对vcl.bpl和rtl.bpl包dcp的引用。这样编译的包比较大,但相对独立。
2.在程序使用包多时,可以重新编译vcl.bpl和rtl.bpl包,生成一公用包,与程序一起发布。这样编译的包非常小。但依赖于公用包
注意:Build with runtime packages打勾后,下面输入框存在的包将不会编译进程序,会在程序启动时动态加载当前程序目录下和系统目录文件,下面输入框不存在的包将会编译进行程序。在这里应该只输入自己创建的包
配置完成后,在程序里使用时没有什么不同,首先在uses中引用单元,然后就可以调用函数与方法和使用类了。
另外动态加载包时如果提示“Application is not licensed to use this feature”,一般是将工程属性中的Build with runtime packages选项选中后,但下面输入框中的包没有删除,将输入框中的包全部删除,只保留vcl即可