所以我为我的应用程序构建了一个运行时包。这需要一些其他BPL,例如:ADORTL.bpl, BDRTL.bpl, VCL.bpl
等等。现在我想使用我在主应用程序中创建的BPL,我也想在运行时加载它。因此,每当用户执行需要来自bpl的某些信息的操作时,我会加载它,并在不需要时卸载它。
为了在主应用程序中使用我的bpl,我必须使用运行时包编译我的应用程序。如果我这样做的话,当我将.exe文件移动到没有安装Delphi的其他计算机时,它会让很多bpl工作。有没有一种方法可以用运行时包构建,并以某种方式在exe文件中集成(vcl.bpl,adortl.bpl)?
我希望我的主应用程序只能询问我创建的bpls,而不是Delphi IDE bpls。
答案 0 :(得分:2)
不,这就是它的工作方式。您可以使用运行时包编译或不编译。就像怀孕一样:无论你是或不是。
答案 1 :(得分:1)
在指定使用运行时包的项目选项中,有一个列出所需包的编辑框。删除您不想要的任何软件包名称,将它们编译到EXE文件中。
但请注意,您保留的BPL文件也使用其他BPL文件。特别是,您的BPL可能使用VCL和RTL包。因此,当您加载包时,它将隐式加载其他包。您不能同时加载任何单元的多个副本。您的软件包使用RTL,因此您的EXE也需要使用RTL软件包;你不能像我上面描述的那样从编辑框中省略它。如果你这样做,那么你的EXE将拥有一份RTL单元,而包装将有另一份,这是不允许的。
如果您的软件包使用了仅的软件包,那么您可以执行其他操作。从"删除其他包裹"您的包列表和重新编译。编译器将警告隐式包含的单元,即通常驻留在刚删除的包中的单元。将这些单位显式添加到您的包中并重新编译。重复,直到警告消失。你基本上定义了一个" superpackage"您所有包的独特依赖关系。 (VCL和RTL不是唯一的依赖关系,因此不要在"要求"列表中省略它们。)
您无法安排EXE仅使用一个BPL文件和来动态加载和卸载该BPL文件。如果动态加载包,那么至少需要使用RTL和VCL包。
此外,您同意的Delphi许可可能会限制您重新打包RTL和VCL单元。我不清楚细节。仔细阅读许可证以进行检查。