哪一个最适合在delphi中使用,即使用包或dll

哪一个最适合在delphi中使用,即使用包或dll,delphi,packages,delphi-7,Delphi,Packages,Delphi 7,我想在delphi应用程序中使用.dll,但我很好奇delphi包是否比dll更灵活?不知道您的确切意思,并且相信您是新手(因此我可能会省略一些特殊方面),并暗示您知道什么是dll: 构建包的首要原因是编写设计时组件。 你可以做所有的事情(好的,几乎是…),一个包和DLL一样好——除了设计时的东西 此外,您可以将多个已编译的包打包到一个Borland包库(BPL文件),而无需考虑设计时功能。如果您认为部署和运行时绑定一个BPL比部署和运行时绑定各种DLL更好,那么就试试吧。不过,主要目的是设计时

我想在delphi应用程序中使用.dll,但我很好奇delphi包是否比dll更灵活?

不知道您的确切意思,并且相信您是新手(因此我可能会省略一些特殊方面),并暗示您知道什么是dll:

构建包的首要原因是编写设计时组件。

你可以做所有的事情(好的,几乎是…),一个包和DLL一样好——除了设计时的东西


此外,您可以将多个已编译的包打包到一个Borland包库(BPL文件),而无需考虑设计时功能。如果您认为部署和运行时绑定一个BPL比部署和运行时绑定各种DLL更好,那么就试试吧。不过,主要目的是设计时支持。

不知道您的确切意思,并且相信您是一个新手(因此我可能会省略一些专门的方面),这意味着您知道DLL是什么:

构建包的首要原因是编写设计时组件。

你可以做所有的事情(好的,几乎是…),一个包和DLL一样好——除了设计时的东西


此外,您可以将多个已编译的包打包到一个Borland包库(BPL文件),而无需考虑设计时功能。如果您认为部署和运行时绑定一个BPL比部署和运行时绑定各种DLL更好,那么就试试吧。不过,其主要用途是设计时支持。

包是可以导出类的特殊DLL,而DLL只能导出函数。是的,您可以编写一个DLL函数来创建给定类的实例,但不能使用DLL中声明的类(除非可能使用一些黑客),而可以直接使用包中声明的类。软件包“知道”Delphi对象体系结构,而DLL不知道。另一方面,DLL可以从任何能够使用它们的语言中使用,而包是特定于Delphi的。

包是可以导出类的特殊DLL,而DLL只能导出函数。是的,您可以编写一个DLL函数来创建给定类的实例,但不能使用DLL中声明的类(除非可能使用一些黑客),而可以直接使用包中声明的类。软件包“知道”Delphi对象体系结构,而DLL不知道。另一方面,DLL可以从任何能够使用它们的语言中使用,而包是特定于Delphi的;是用西班牙语写的,但是你可以尝试自动翻译(在页面的右边)

基本上,BPL是DLL的扩展。这是一个添加了一些内容的DLL

(肯定)如果使用BPL,您可以使用DLL做更多的事情。更多的权力。您可以使用RTTI(必须使用AccessRTTI的运行时包构建应用程序)

(否定)如果您使用功能更强大的BPL,则只能与Delphi一起使用,而不能与其他语言一起使用

如果你确定你只使用Deplhi,我认为你必须使用BPL。搜索有关RTTI、RegisterClass、GetClass方法、LoadPackage(用于动态加载)的示例

问候


请原谅我英语不好。这不是我的自然语言。

你可以在我的博客上读到这篇文章:“;是用西班牙语写的,但是你可以尝试自动翻译(在页面的右边)

基本上,BPL是DLL的扩展。这是一个添加了一些内容的DLL

(肯定)如果使用BPL,您可以使用DLL做更多的事情。更多的权力。您可以使用RTTI(必须使用AccessRTTI的运行时包构建应用程序)

(否定)如果您使用功能更强大的BPL,则只能与Delphi一起使用,而不能与其他语言一起使用

如果你确定你只使用Deplhi,我认为你必须使用BPL。搜索有关RTTI、RegisterClass、GetClass方法、LoadPackage(用于动态加载)的示例

问候


请原谅我英语不好。这不是我的自然语言。

在RTFMs之后定义“混乱”、“更灵活”、“delpshi”:)和“正确的建议”——Delphi包的属性在文档中有很好的定义。我建议您在事后完善您的问题。在RTFMs之后定义“混乱”、“更灵活”、“delpshi:”)和“正确建议”——Delphi包的属性在文档中有很好的定义。我建议你以后再完善你的问题。软件包只是内置了本机VCL支持的DLL。它们不仅限于实现设计时组件。运行时代码可以使用它们来实现插件等。在普通DLL上使用包的主要原因是为了获得VCL支持!如果包公开VCL对象供调用的EXE使用,这一点很重要。当使用普通DLL时,这会变得更难正确,并可能导致许多问题。请同意。然而,您只能使用DLL来完成所有这些工作,这样做会很困难。但是尝试将DLL填充到VCL调色板中,也就是说,在没有包的情况下进行设计时填充。-1 BPL是一个包,而不是一个包库。BPL是单位的集合。曾经有一个工具可以创建和部署包集合。请记住,您的DLL最终可能会有一个单独的RTL/VCL副本,并且某些函数可能无法按预期工作(即,如果exe和DLL中同时存在相同的类声明,“is”可能无法工作)。软件包与Delphi紧密集成,其范围远远超出了向IDE添加新组件的范围,这不是它的主要用途。Delphi本身是使用运行时包构建的。我不是将多个.dpk(Delphi包)编译成多个.dcp(Delphi编译包)吗?我不是从一个或多个.dcp构建BPL吗?我可能忘记了一些东西,但是…?@Remy Lebeau>>它们不仅仅限于实现设计时组件。运行时代码可以使用