我从Delphi XE5开始,我想将我的应用程序拆分为一个exe和多个可重用的库。这意味着我不想在DLL或运行时包中拆分正在运行的* .exe应用程序。
为了实现这一点,我已经看到在delphi中我们可以创建运行时包,并且我遵循以下步骤:
但是当我在EXE项目中添加一个引用来使用BPL项目中的模块(例如moduleX)时,编译器会给出一个这样的错误:
[dcc32致命错误] ModuleX.pas(7):F1026找不到文件:' C:\ DDDProject \ MyEXEProject \ ModuleX.dcu'
如果我选中标记为'链接运行时包' EXE项目(MyEXEProject)中的选项解决方案编译没有错误,但我无法运行或调试应用程序。
拜托,有人可以帮助我吗?
答案 0 :(得分:0)
我不想在DLL或运行时包中拆分正在运行的* .exe应用程序。
运行时包BPL文件是 DLL。这就是允许它们在多个EXE之间共享的原因。它们只是普通的DLL,内置了特殊的VCL / FMX处理。
启用"链接运行时包"选项,您将EXE文件链接到您的BPL文件(或DYLIB或SO文件,如果编译Windows以外的平台),所以您必须分发BPL文件(以及它依赖的任何其他BPL文件,如rtl190.bpl和vcl190.bpl)与您的EXE文件。所以他们必须在EXE的文件夹中,或者至少在OS search path中,以便EXE运行。
禁用"链接运行时包"选项,您的软件包代码会直接静态链接到EXE文件中,因此您需要确保EXE项目的搜索路径包含您的软件包的DCU文件所在的文件夹
如果要创建可重用的库而不是BPL,请创建静态库(LIB文件)而不是运行时包。然后,您可以根据需要将LIB文件添加到多个项目中。