dfm文件可以链接到bpl文件吗?

时间:2018-04-10 13:05:53

标签: delphi embedded-resource delphi-10.1-berlin dfm

我的项目设置如下:

有多个运行时包。我没有使用设计时包。

每个运行时包的DCP,包和单元输出目录都设置为.\Library\$(Platform)\$(Config)。我没有将它们输出到全局IDE位置,以获得不同版本软件包的可共同安装。

每个包中都有一个预构建事件,它调用一个脚本文件,该文件将源文件夹中的所有dfm文件复制到名为.\Library\Dfm的目录。

为了构建依赖包和可执行文件,我将dfm和其他文件的输出路径添加到每个依赖项本地搜索路径,例如:

..\Package1\Library\$(Platform)\$(Config)
..\Package1\Library\Dfm
..\Package2\Library\$(Platform)\$(Config)
..\Package2\Library\Dfm
..\Package3\Library\$(Platform)\$(Config)
..\Package3\Library\Dfm

从技术上讲,我只需要将Dfm目录添加到最终的可执行文件搜索路径,因为dfm文件链接到PE可执行文件资源部分。

对于每个包都有两条路径似乎是一个不必要的额外步骤。

所以我问:是否可以将dfm文件链接到每个包的bpl文件而不是最终的可执行文件?

我能想到的一个问题是,只有在为可执行文件启用运行时包时,这才会起作用,因为编译器无法将资源从bpl移动到exe,否则?!

原则上是否可以将dfm资源放在与可执行文件不同的模块中?

1 个答案:

答案 0 :(得分:0)

在启用运行时包的情况下编译可执行文件时,编译器不需要访问包中表单的dfm文件。

它们确实链接到bpl个文件。

在禁用运行时包编译时,编译器会抱怨丢失的dfm文件。所以它显然无法从已编译的包文件(bpl)中提取资源。