Delphi - 为啥我不能在 64 位中安装我的组件?

Posted

技术标签:

【中文标题】Delphi - 为啥我不能在 64 位中安装我的组件?【英文标题】:Delphi - Why can't I install my component in 64Bit?Delphi - 为什么我不能在 64 位中安装我的组件? 【发布时间】:2017-07-24 03:35:44 【问题描述】:

我编写了一个自定义组件并尝试在我的 Delphi 10.1 环境中安装它。

我只有一个 .Pas 文件。

我去了:

组件 - 安装组件,选择我在桌面上新文件夹中的单元 -> 在同一目录中创建一个新包 -> 点击完成

现在,当我在 IDE 中打开我的包并将平台设置为 windows 64 位时,我可以编译但不能安装我的组件。

我的组件是从TEdit-control派生的,不知道这是否相关。

我的需求列表如下:

dbrtl.dcp
rtl.dcp
vcl.dcp
vclactnband.dcp
vcldb.dcp
vclx.dcp
xmlrtl.dcp

我真的很想在 32 位应用程序和 64 位应用程序中使用我的组件。

IDE 提供的其他 VCL-Controls 在 64 位应用程序中编译没有问题,但是当我将项目设置为 64 位时,我的组件显示为灰色。

我用的是win8.1 64Bit。

【问题讨论】:

阅读文档:docwiki.embarcadero.com/RADStudio/Berlin/en/… 【参考方案1】:

IDE 是一个 32 位进程。因此,您只能安装 32 位软件包。但是,运行时,64 位程序可以使用您的组件。通过直接链接或通过运行时包链接它。在后一种情况下,您需要提供 64 位运行时包。

文档对此进行了详细介绍:http://docwiki.embarcadero.com/RADStudio/en/64-bit_Windows_Application_Development#Considerations_for_64-bit_Applications

【讨论】:

我该怎么做? 做什么?有许多步骤。首先安装 32 位设计时包。你要做的第一件事是证明你可以让一切都在 32 位上工作。之后就很容易了。 32Bit 没有问题。之后我为我的 .bpl 切换到 64 位并说编译和创建。现在,当我尝试组件-> 安装组件-> 相同的单元,相同的包时。我收到一个错误,应用程序不是有效的 win32 应用程序。 我还是不知道你是怎么链接的,不管你是否使用运行时包。步骤不同。在任何情况下,您都可以执行与 32 位相同的操作,但使用 64 位模块。但没有 64 位设计时包。忘记在 IDE 中安装更多内容。您只对 32 hit design time 包执行此操作。 您需要为组件代码创建 32 位和 64 位运行时包,以及将组件安装到 IDE 中的 32 位设计时包。不要创建 64 位设计时包。表单设计器仅适用于 32 位组件。编译 64 位项目时,它链接到 64 位运行时包。这在the documentation 中有解释。

以上是关于Delphi - 为啥我不能在 64 位中安装我的组件?的主要内容,如果未能解决你的问题,请参考以下文章

在 Apple App Analytics 中安装我的应用程序的统计信息

用户在 GSuite Marketplace 中安装我的云端硬盘应用后,如何获取用户凭据(刷新令牌)?

为啥我不能在 64 位机器上正确读取 HKCU 中的 32 位注册表值?

Delphi 与 Windows 2008 Server 64 位的兼容性

Delphi 的 64 位 DLL c/c++ 接口

虚拟机中安装Virtualbox,嵌套的虚拟机不能运行64位系统