C++ Builder引入EhLib组件编译报错:'Vcl'引用歧义
C++ Builder添加EhLib组件时出现Vcl命名空间歧义编译错误
在Embarcadero® RAD Studio 12(版本29.0.53982.0329)环境下,使用C++ Builder创建简单项目并将EhLib包组件添加到窗体时,触发如下编译错误:
[bcc32c Error] Vcl.Buttons.hpp(66): reference to 'Vcl' is ambiguous Vcl.Buttons.hpp(44): candidate found by name lookup is 'Vcl' EhLib.VCL.hpp(48): candidate found by name lookup is 'Ehlib::Vcl'
- Delphi环境下创建同类项目无此问题
- 因EhLib包文件繁多,暂无法制作最小复现项目
问题分析
自动生成的EhLib.VCL.hpp文件包含using namespace语句,但该文件由系统基于pas文件生成,不建议修改;本人编写的Unit1.cpp代码未使用任何using namespace语句。
关键代码片段
EhLib.VCL.hpp命名空间声明
... } /* namespace Vcl */ } /* namespace Ehlib */ #if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_EHLIB_VCL) using namespace Ehlib::Vcl; #endif #if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_EHLIB) using namespace Ehlib; #endif ...
Vcl.Buttons.hpp命名空间声明
... } /* namespace Buttons */ } /* namespace Vcl */ #if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_VCL_BUTTONS) using namespace Vcl::Buttons; #endif #if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_VCL) using namespace Vcl; #endif ...
可编辑代码Unit1.cpp
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "MemTableDataEh" #pragma link "MemTableEh" #pragma link "DBAxisGridsEh" #pragma link "DBGridEh" #pragma link "DBGridEhGrouping" #pragma link "DBGridEhToolCtrls" #pragma link "DynVarsEh" #pragma link "EhLib.VCL" #pragma link "GridsEh" #pragma link "ToolCtrlsEh" #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { // } //---------------------------------------------------------------------------
内容的提问来源于stack exchange,提问作者DmitryB
相关产品推荐
相关产品推荐

