我找不到关于如何在Embarcadero c++ Builder 11 Alexandria Professional中注册组件(包)的信息,用于32位和64位项目。
我找到的一些信息在https://docwiki.embarcadero.com/RADStudio/Alexandria/en/64-bit_Windows_Application_Development.
我看到,对于Delphi,您必须使用以下语法(这是我在2014年论坛中发现的):
unit agnosticu;
interface
uses
System.Classes;
type
TAgnosticComponent = class(TComponent)
end;
[ComponentPlatforms(pidWin32)]
TWin32Component = class(TComponent)
end;
[ComponentPlatforms(pidWin64)]
TWin64Component = class(TComponent)
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Test', [TAgnosticComponent, TWin32Component, TWin64Component]);
end;
end.
在c++中,我似乎已经明白我需要修改以下代码部分:
namespace Mycomponent
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TMyComponent)};
RegisterComponents(L"MyCategory", classes, 0);
}
}
但是关于c++,我没有找到任何相关的信息。
我似乎明白我应该使用ComponentPlatformsAttribute
类和pidWin32
和pidWin64
属性,但我不知道如何使用。
或者,在c++中,修改RC_DATA
资源的PLATFORMTARGETS
变量是唯一的解决方案吗?
有人能帮我吗?
通过一些测试,我意识到没有必要对原始代码进行任何更改。64位平台的存在足以将. bpl文件(32位版本)的变量'PLATFORMTARGETS'设置为值3,即包兼容32位和64位(而不是之前的值1对应仅32位)。