使用在另一个 BPL 中实现的组件安装 BPL

Install BPL with components implemented in an other BPL in

我正在使用 C++ Builder 10 Seattle,我正在尝试安装一个组件包,该组件包注册了在不同 bpl 中实现的组件。

从技术上讲,我已经这样做了:

我创建了两个包。一个仅定义为运行时 (comps.bpl),另一个定义为设计时 (compsIDE.bpl)。我自己实现的所有组件都包含在运行时库中。在设计时的包中,我包含了 fcomps.bpi 并添加了一个名为 compsreg.cpp 的单元。在本单元中,我使用以下代码从 comps.lib:

安装组件
#include "MyComponent.h"

namespace comps
{
    void __fastcall PACKAGE Register()
    {
        TComponentClass classes[1] = {__classid(TMyComponent)};
        RegisterComponents("MyComponents", classes, 0);
    }
}

问题是组件没有安装。我对 Delphi 单元使用相同的技术,这些单元也包含在 comps.bpl 中并安装。

有人知道为什么 Register 方法不注册组件吗?我认为唯一的原因可能是该方法永远不会被 C++ 调用,而是 Delphi...

希望得到您的帮助... 凯雷姆

add a Unit called compsreg.cpp

这就是问题的根源。文件中的 namespace 必须与文件名匹配,否则 IDE 将无法正确找到导出的 Register() 函数。您需要将 namespace comps 改为 namespace compsreg