【问题标题】:fail to install chromium embedded on C++ Builder from Delphi files无法从 Delphi 文件安装嵌入在 C++ Builder 上的 chromium
【发布时间】:2013-09-09 16:34:12
【问题描述】:

我想安装嵌入在 C++ Builder v.6 上的 chromium。很久以前我已经安装过一次,我使用 TChromium 开发了一些应用程序。但是在我重新安装操作系统后,我试图再次安装这个组件。当我编译 delphi 帕斯卡单元时,我得到了链接器错误:

Build
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::~TCustomOutline()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::TCustomOutline(Classes::TComponent *)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::SetOutlineStyle(Outline::TOutlineStyle)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::SetOutlineOptions(System::Set<Outline::TOutlineOption, 0, 2>)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::GetPicture(int)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::SetPicture(int, Graphics::TBitmap *)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TOutlineNode::GetFullPath()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TOutlineNode::HasChildren()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TOutlineNode::getFirstChild()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TOutlineNode::GetNextChild(int)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::Insert(int, const System::AnsiString)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TOutlineNode::GetLastChild()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::Add(int, const System::AnsiString)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::AddChild(int, const System::AnsiString)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::Get(int)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::Clear()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TOutlineNode::SetExpandedState(bool)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::SetSelectedItem(int)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::Click()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::GetSelectedItem()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::Expand(int)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::Loaded()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external 'Outline::TCustomOutline::' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::DefineProperties(Classes::TFiler *)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::DrawCell(int, int, const Types::TRect&, System::Set<Grids::Grids__3, 0, 2>)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__tpdsc__ Outline::TCustomOutline' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::SetItemHeight(int)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::StoreBitmap(int)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp
  [Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::SetStyle(Outline::TOutlineType)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp

我只是点击了组件 -> 安装组件 -> 选择了 cefvcl.pas,然后当我点击编译时,我得到了上面的结果。

如何在 BCB6 上安装 chromium,或者如何解决这个问题?

更新:

另外,当我尝试编译时,我收到未声明的 indentifer 错误,代码在哪里:

TThread.Synchronize(nil, sync.Execute);

我只是通过删除 syncronize 绕过它,所以之后的行看起来像:

sync.Execute;

更新2

如果我正在尝试其他方式来安装组件,我正在创建新包并保存它,然后向其中添加 4 个文件:

cefreg.pas
ceflib.pas
cefvcl.pas
cefgui.pas

然后我替换 TThread.Synchronize(nil, sync.Execute);与同步。执行;绕过错误,但在那之后我仍然有一个问题:

[Linker Fatal Error] Fatal: Unable to open file 'APPEVNTS.OBJ'

【问题讨论】:

    标签: c++ delphi c++builder


    【解决方案1】:

    您正在将所选组件安装到 IDE 的默认自定义组件包中。该包显然引用了TOutline 组件,但该组件未在包中定义。通常,TOutlinevclsmp 包中,因此请将 vclsmp 添加到组件包的 requires 列表中。

    最好使用不同且更典型的技术来安装 Chromium 控件。与其在默认的自定义组件包中只添加一个单元,不如安装 Chromium 组件自带的现成包: 打开与你的 Delphi 版本对应的 .dpk 文件,编译并安装它。如果您的产品版本没有包文件,则只需将四个源文件添加到新包中;使用现有的 .dpk em>文件作为示例。

    您的一些麻烦可能是因为该库是针对比 2002 年的 C++ Builder 6 更高的产品版本而编写的。例如,似乎期望 TThread 有一个 Synchronize 的两个参数版本,并且在那里是一个AppEvnts 单元。简单地删除你没有的东西而不理解它们并不是解决这个问题的方法,尤其是当涉及到线程时。

    所有源文件引用cef.inc,根据编译器版本设置条件定义。如果它无法识别您的编译器版本,则必须对其进行编辑,以便它设置各种版本符号和功能符号以准确描述您的编译环境。

    【讨论】:

    • 谢谢智能提示,我很欣赏它。我已经更新了我的帖子。我的第二次尝试是创建新包并将文件添加到它。您能否更新您的答案并告诉我在哪里位于VCLSMP包。您还说要打开 .dpk 文件编译并安装它,但我使用的是 C++ Builder 6 而不是 Delphi。谢谢
    猜你喜欢
    • 2013-04-11
    • 1970-01-01
    • 2015-06-10
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多