我在Delphi 7中有一个主应用程序,该应用程序加载了Delphi 7 dll(我们将其称为 “ X” dll)。该dll是“应用程序核心”和“基于数据库代码的框架”。这个dll包含很多东西。除了主应用程序外,我还有很多其他的dll,它使用X dll进行数据库访问。这是旧版应用程序。
我需要将应用程序迁移到Delphi 10 Seattle,但是我不能一次完成所有操作。这是一个非常大的应用程序。
所以我想到了这个主意:转换主应用程序并创建一个新的数据库框架,这次是在Delphi Seattle BPL中静态加载。当我的应用程序启动时,我会动态加载X dll。在X dll中,我动态加载BPL并将访问数据库的所有方法更改为使用BPL方法。这样,我现在不会接触的其他dll将继续工作。
问题是:我无法从X dll加载BPL。它只是引发了AV。我尝试使用LoadLibrary和LoadPackage,都失败了。 我发现,如果我在Delphi Seattle中编译该X dll,它的工作原理就像是一种魅力。但是,我不能这样做,因为就像我刚开始所说的那样,这个X dll除了数据库访问权限外还有很多东西,而且我现在没有时间进行全部转换。
所以,问题是:如何从Delphi 7 DLL加载Delphi 10 Seattle BPL?