我有一个 VCL Forms 应用程序,其中包含对我创建的 BPL 文件的引用。我将 BPL 中框架组件的单元名称添加到 VCL 应用程序主窗口的 uses 子句中。该应用程序构建良好,但是当我运行它时,它在到达项目文件中的第一行“Application.Initialize”之前就死了。如果我从 uses 子句中注释掉框架的单位,应用程序就会启动并运行良好。
什么可能导致应用程序启动时出现致命错误?
我猜在启动时加载 BPL 文件有问题,但我找不到问题。谢谢你。
更多信息如下... VCL 应用程序位于 XE5 中,我正在尝试将其转换为 BPL。整个应用程序驻留在一个 TFrame 控件中,其中包含许多其他按钮和框架,可以访问应用程序的所有底层功能。然后这个“主框架”被放置在应用程序的主窗体中,除了几个菜单项外,它是空的。原始应用程序构建并运行良好。
我创建了一个新的 BPL 项目,并添加了这个“主框架”组件,以创建一个 BPL 包,它本质上是我的整个应用程序,可以像以前一样用于普通的独立 exe 应用程序,或者添加到一个 RemObjects Hydra 插件模块,并最终嵌入到 C# 应用程序中。具有单个“主框架”组件的 BPL 项目构建良好,没有错误。
然后我用一个空的主窗体创建了一个新的 VCL Forms 应用程序,并将项目的“选项->包->运行时包”设置为包含我的新 BPL,并选中“与运行时包的链接”选项。我在主窗体的uses 子句中添加了“主框架”单元,一切都没有错误地构建。
问题:当我从 XE5 运行应用程序时,它似乎开始正常启动,但在到达第一行代码“Application.Initialize;”之前就死机了 在项目文件中。请注意,我还没有编写任何代码来创建位于 BPL 中的“主机”实例。我只是将它的单位添加到使用子句中。XE5 中没有显示错误消息,也没有任何内容发布到 Build 或 Output 窗口。如果我从 uses 子句中注释掉“主框架”单元,则应用程序运行良好,并显示空的主窗口。
注意:该应用程序使用 JVcl、NativeXml、TsiLang、ZipForge 和 FastReports。