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