Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为不同的Delphi版本编译Delphi组件包(bpl)_Delphi_Components_Delphi 2010_Vcl - Fatal编程技术网

为不同的Delphi版本编译Delphi组件包(bpl)

为不同的Delphi版本编译Delphi组件包(bpl),delphi,components,delphi-2010,vcl,Delphi,Components,Delphi 2010,Vcl,情况如下。我通常使用RAD Studio 2010进行Delphi开发。我有一些组件要以二进制形式重新分发(*.bpl,无源代码)。但我希望人们能够使用他们,尽管他们的Delphi版本。但是,例如,dcu文件只能由生成它们的编译器版本使用。据我所知,bpl文件的情况几乎相同。根据Delphi版本,每个bpl文件都需要相应的VCLXX.bpl库。如何使2010年编译的BPL能够在Delphi7、2007等中使用 是安装所有Delphi版本并在每个版本中分别编译bpl文件的唯一解决方案吗?是的,这是

情况如下。我通常使用RAD Studio 2010进行Delphi开发。我有一些组件要以二进制形式重新分发(*.bpl,无源代码)。但我希望人们能够使用他们,尽管他们的Delphi版本。但是,例如,dcu文件只能由生成它们的编译器版本使用。据我所知,bpl文件的情况几乎相同。根据Delphi版本,每个bpl文件都需要相应的VCLXX.bpl库。如何使2010年编译的BPL能够在Delphi7、2007等中使用


是安装所有Delphi版本并在每个版本中分别编译bpl文件的唯一解决方案吗?

是的,这是唯一的解决方案。每个编译器生成特定于自己版本的DCU和BPL。我知道的唯一例外是Delphi 2006和2007共享相同的格式。

要分发可由多个编译器版本使用的编译代码,请分发普通DLL,而不是BPL。包和单元是特定于版本的

创建以C样式导出的独立函数,或创建在操作系统中注册的COM对象


不过,它不必改变你的整个发展战略;它可能是一个使用BPL的DLL,因此您可以保留已放入包中的所有工作。

我可以创建一个安装程序,在计算机上获取已安装的Delphi版本。 选择要创建de bpl的witch Delphi,并通过命令行调用相应的Dcc以生成相应的bpl并在Delphi中安装。 您可以查看JVCL安装程序以获取示例


At.< /P> < P>可以在C++ Builder中创建Objfile文件,并链接到Delphi中,分发一个小的PAS文件(头)。C++ Builder Objt格式从Delphi 7变为2009(我可以确认2010,但我想它也一样)。


不过,您需要测试这是否适用于可视/设计时组件。

不幸的是,这需要我的用户的应用程序包含我的dll库。我不认为普通用户会乐意重新发布它们。如果你最初的计划(BPL)是可行的,他们就必须这么做。在这方面没有区别。(虽然我听说有很多方法可以将DLL捆绑到EXE中,但对于那些真正关心自己分发多少文件的人来说)Delphi可以从BPL中获取代码并将其集成到目标EXE中。没有必要单独重新发布BPL。不,Delphi不能这样做。也许您正在考虑DCP文件,据我所知,它本质上是一个包中所有DCU文件的集合。但该文件仅在使用软件包时使用,因此您仍然需要BPL文件。@SaCi,JVCL以源代码形式重新分发,并在目标开发人员PC上编译为二进制文件。因此,这不是我的情况。潜在的“额外”问题:构建这些BPL文件是否需要“完整”的Delphi版本(无升级)?例如,从Delphi 7升级到Delphi 2010后,许可证是否允许分发使用Delphi 7原始版本创建的BPL和使用Delphi 2010升级创建的文件?是的,@mjustin,这是允许的。人们总是这样做。我的印象是,所有组件供应商都是这样做的。大多数Delphi开发人员拒绝使用无源代码分发的组件-正是因为在更新包可用之前,您无法使用更新版本的Delphi,如果这些软件包变得不可携带,那么您就有问题了。为了详细说明这一点,只提供二进制文件的组件供应商倾向于将它们打包到包含所有受支持二进制文件的安装程序中,然后安装用户选择的安装程序。