我注意到在一个64位应用程序中,我编写的VCL Design组件在组件调色板中是灰色的:
其他第三方VCL组件可在32位和64位模式下工作。
我的BPL可以在32位和64位模式下编译。没有只需要32位的代码。我可以做些什么来解锁组件到64位应用程序?
VCL组件的BPL源代码为:
package ......;
{$R *.res}
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$ENDIF IMPLICITBUILDING}
{$DESCRIPTION '......'}
{$IMPLICITBUILD OFF}
requires
rtl,
vcl,
VclSmp,
vclx,
adortl,
dbrtl,
vclactnband,
xmlrtl,
vcldb,
Jcl,
vclie;
contains
HsGauge in 'HsGauge.pas',
.......
end.
我注意到,我不能安装组件时,它是在64位编译(我不知道这是否是原因):
32位:
64位:
2条答案
按热度按时间chy5wohz1#
IDE是一个win32程序,所以它只能加载win32 dll和win32 bpl,所以你不能安装win 64 bpl默认情况下-所有必须正常工作,我们开发了很多组件,所以你的代码破坏了一些东西,在现代版本的 Delphi 中,有一个特殊的属性,用于指定你的组件的目标平台的类-“ComponentPlatformsAttribute”,所以,如果你写这样东西:
此组件适用于Win32和Win 64平台,但不适用于(灰色)Android,IOS等。请尝试在那里找到解决方案。
P.S.如果它没有帮助-尝试创建一个简单的BPL与一个简单的示例组件,并尝试在win 64中使用它。如果它的工作-比较这个BPL的设置与您的不可行的BPL。然后将差异一个接一个地移动到示例BPL,直到它将停止工作。这样你就可以找到什么是错的。
piok6c0g2#
Delphi IDE是一个32位应用程序,需要32位包才能在设计时使用组件。
你的64位应用程序需要一个64位运行时包,这就是为什么 Delphi 可以构建64位包。
如果你不在你的应用程序中使用运行时包,那么就没有必要创建一个。