问题描述
我仍在使用Delphi 5。
我有一个程序,它是对较早程序的重写,实际上使用了较早程序的根单元。当我编译它时,Delphi出于某种原因不会将BPL链接到EXE。新程序和旧程序都能很好地编译,因此,这个程序显然是问题所在。我已经将链接和编译的项目选项与其他链接正常的程序进行了比较。主机中的编译器选项为标准选项。
尽管程序在我的开发箱中,但它按预期运行,显然是在开发区域中读取BPL。但是,除非我将BPL复制过来,否则它肯定不会在另一台机器上运行,这显然不是很聪明。
我已经阅读了关于该主题的所有内容,但是尽管我发现了对链接的引用不起作用,但是我没有找到任何有助于弄清为什么在这种情况下链接不起作用的内容。
任何人都可以给我一些有关此的文档或指出我显然错过的内容吗?我知道这是我做过的事情,但是尽管花费了很多时间,但我仍无法弄清楚为什么!
由于未生成任何错误,因此无法向您显示错误原因。关于在哪里可以找到问题的任何建议,将不胜感激。
解决方法
如果转到“项目选项”的“软件包”选项卡,是否选中了“使用运行时软件包构建”?
如果是,那么您需要将其他软件包部署到其他计算机上(如果它们不在操作系统可以找到的位置的那些计算机上)。
如果不是,Delphi将把您的项目编译并链接为.Exe文件,并且软件包中DCU的代码将静态链接到您的.Exe中,因此您无需部署.BPL(并且即使您这样做也将被忽略。)
AFAIK,当Delphi将项目编译为.Exe时(即,如果未选中“使用运行时程序包构建”),则编译器将从.DCU文件而不是.DCU文件中获取其他单元的代码进行链接。 BPL文件。如果找不到.DCU文件,或者您已告诉编译器进行“构建”,则它将尝试从相应的.PAS文件中生成.DCU,如果可以在项目目录中或通过以下方式找到它们目录/条件下的Seach Path
。