Когда я создаю простой проект в C++ Builder и добавляю компонент From из моего пакета — 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 ошибок не возникает.
Я использую Embarcadero® RAD Studio 12 версии 29.0.53982.0329
Я пока не могу создать минимальный проект для воспроизведения ошибки, поскольку пакет EhLib содержит довольно много файлов и код.
Я нашел следующий оператор using namespace в файле EhLib.VCL.Hpp. Но я не могу его удалить, поскольку этот файл автоматически создается системой на основе файла pas. .
Файл EhLib.VCL.hpp
...
extern DELPHI_PACKAGE System::Types::TPoint __fastcall SafeGetMouseCursorPos(void);
extern DELPHI_PACKAGE System::UnicodeString __fastcall GetEhLibGUISysInfoAsString(void);
extern DELPHI_PACKAGE System::UnicodeString __fastcall GetEhLibFullSysInfoAsString(void);
} /* 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
#pragma pack(pop)
#pragma option pop
#pragma delphiheader end.
Я вообще не использую пространство имен в своем коде. Все операторы использования пространства имен находятся в автоматически создаваемых файлах hpp, которые не рекомендуется изменять.
Я не могу добавить весь исходный файл, поскольку stackoverflow ограничивает текст 30 000 символов, поэтому я Я добавляю только те части, которые кажутся важными.
Файл Unit1.cpp. Файл, который я могу редактировать.
//---------------------------------------------------------------------------
#include
#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)
{
//
}
//---------------------------------------------------------------------------
Файл Vcl.Buttons.hpp. Я не могу редактировать этот файл. Это часть базовой библиотеки VCL.
// CodeGear C++Builder
// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
// All rights reserved
// (DO NOT EDIT: machine generated header) 'Vcl.Buttons.pas' rev: 36.00 (Windows)
#ifndef Vcl_ButtonsHPP
#define Vcl_ButtonsHPP
#pragma delphiheader begin
#pragma option push
#if defined(__BORLANDC__) && !defined(__clang__)
#pragma option -w- // All warnings off
#pragma option -Vx // Zero-length empty class member
#endif
#pragma pack(push,8)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//-- user supplied -----------------------------------------------------------
#ifndef _WIN64
#pragma link "dwmapi.lib"
#endif //_WIN64
...
};
//-- var, const, procedure ---------------------------------------------------
extern DELPHI_PACKAGE void __fastcall (*FNavigatorEnableChanged)(TBaseNavigator* Self);
extern DELPHI_PACKAGE Winapi::Windows::TRect __fastcall DrawButtonFace(Vcl::Graphics::TCanvas* Canvas, const Winapi::Windows::TRect &Client, int BevelWidth, TButtonStyle Style, bool IsRounded, bool IsDown, bool IsFocused);
} /* 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
#pragma pack(pop)
#pragma option pop
#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif // Vcl_ButtonsHPP
Файл EhLib.VCL.hpp. Я не могу редактировать этот файл. Он генерируется автоматически.
// CodeGear C++Builder
// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
// All rights reserved
// (DO NOT EDIT: machine generated header) 'EhLib.VCL.pas' rev: 36.00 (Windows)
#ifndef EhLib_VCLHPP
#define EhLib_VCLHPP
#pragma delphiheader begin
#pragma option push
#if defined(__BORLANDC__) && !defined(__clang__)
#pragma option -w- // All warnings off
#pragma option -Vx // Zero-length empty class member
#endif
#pragma pack(push,8)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//-- user supplied -----------------------------------------------------------
namespace Ehlib
{
namespace Vcl
{
//-- forward type declarations -----------------------------------------------
class DELPHICLASS TWinControlEh;
class DELPHICLASS TCustomControlEh;
struct TDrawTextOptionsEh;
class DELPHICLASS TFilerAccess;
class DELPHICLASS TMemoryStreamEh;
//-- type declarations -------------------------------------------------------
typedef Data::Db::TBookmark TUniBookmarkEh;
...
extern DELPHI_PACKAGE System::Variant __fastcall RefObjectToVariant(System::TObject* ARefObject);
extern DELPHI_PACKAGE System::TObject* __fastcall VariantToRefObject(const System::Variant &VarValue);
extern DELPHI_PACKAGE System::Types::TPoint __fastcall SafeGetMouseCursorPos(void);
extern DELPHI_PACKAGE System::UnicodeString __fastcall GetEhLibGUISysInfoAsString(void);
extern DELPHI_PACKAGE System::UnicodeString __fastcall GetEhLibFullSysInfoAsString(void);
} /* 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
#pragma pack(pop)
#pragma option pop
#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif // EhLib_VCLHPP
Подробнее здесь: https://stackoverflow.com/questions/793 ... kup-is-vcl
Ошибка компоновщика C++. Vcl.Buttons.hpp(44): кандидат, найденный при поиске по имени, — «Vcl». ⇐ C++
Программы на C++. Форум разработчиков
1735064972
Anonymous
Когда я создаю простой проект в C++ Builder и добавляю компонент From из моего пакета — 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 ошибок не возникает.
Я использую Embarcadero® RAD Studio 12 версии 29.0.53982.0329
Я пока не могу создать минимальный проект для воспроизведения ошибки, поскольку пакет EhLib содержит довольно много файлов и код.
Я нашел следующий оператор using namespace в файле EhLib.VCL.Hpp. Но я не могу его удалить, поскольку этот файл автоматически создается системой на основе файла pas. .
Файл EhLib.VCL.hpp
...
extern DELPHI_PACKAGE System::Types::TPoint __fastcall SafeGetMouseCursorPos(void);
extern DELPHI_PACKAGE System::UnicodeString __fastcall GetEhLibGUISysInfoAsString(void);
extern DELPHI_PACKAGE System::UnicodeString __fastcall GetEhLibFullSysInfoAsString(void);
} /* 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
#pragma pack(pop)
#pragma option pop
#pragma delphiheader end.
Я вообще не использую пространство имен в своем коде. Все операторы использования пространства имен находятся в автоматически создаваемых файлах hpp, которые не рекомендуется изменять.
Я не могу добавить весь исходный файл, поскольку stackoverflow ограничивает текст 30 000 символов, поэтому я Я добавляю только те части, которые кажутся важными.
Файл Unit1.cpp. Файл, который я могу редактировать.
//---------------------------------------------------------------------------
#include
#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)
{
//
}
//---------------------------------------------------------------------------
Файл Vcl.Buttons.hpp. Я не могу редактировать этот файл. Это часть базовой библиотеки VCL.
// CodeGear C++Builder
// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
// All rights reserved
// (DO NOT EDIT: machine generated header) 'Vcl.Buttons.pas' rev: 36.00 (Windows)
#ifndef Vcl_ButtonsHPP
#define Vcl_ButtonsHPP
#pragma delphiheader begin
#pragma option push
#if defined(__BORLANDC__) && !defined(__clang__)
#pragma option -w- // All warnings off
#pragma option -Vx // Zero-length empty class member
#endif
#pragma pack(push,8)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//-- user supplied -----------------------------------------------------------
#ifndef _WIN64
#pragma link "dwmapi.lib"
#endif //_WIN64
...
};
//-- var, const, procedure ---------------------------------------------------
extern DELPHI_PACKAGE void __fastcall (*FNavigatorEnableChanged)(TBaseNavigator* Self);
extern DELPHI_PACKAGE Winapi::Windows::TRect __fastcall DrawButtonFace(Vcl::Graphics::TCanvas* Canvas, const Winapi::Windows::TRect &Client, int BevelWidth, TButtonStyle Style, bool IsRounded, bool IsDown, bool IsFocused);
} /* 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
#pragma pack(pop)
#pragma option pop
#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif // Vcl_ButtonsHPP
Файл EhLib.VCL.hpp. Я не могу редактировать этот файл. Он генерируется автоматически.
// CodeGear C++Builder
// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
// All rights reserved
// (DO NOT EDIT: machine generated header) 'EhLib.VCL.pas' rev: 36.00 (Windows)
#ifndef EhLib_VCLHPP
#define EhLib_VCLHPP
#pragma delphiheader begin
#pragma option push
#if defined(__BORLANDC__) && !defined(__clang__)
#pragma option -w- // All warnings off
#pragma option -Vx // Zero-length empty class member
#endif
#pragma pack(push,8)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//-- user supplied -----------------------------------------------------------
namespace Ehlib
{
namespace Vcl
{
//-- forward type declarations -----------------------------------------------
class DELPHICLASS TWinControlEh;
class DELPHICLASS TCustomControlEh;
struct TDrawTextOptionsEh;
class DELPHICLASS TFilerAccess;
class DELPHICLASS TMemoryStreamEh;
//-- type declarations -------------------------------------------------------
typedef Data::Db::TBookmark TUniBookmarkEh;
...
extern DELPHI_PACKAGE System::Variant __fastcall RefObjectToVariant(System::TObject* ARefObject);
extern DELPHI_PACKAGE System::TObject* __fastcall VariantToRefObject(const System::Variant &VarValue);
extern DELPHI_PACKAGE System::Types::TPoint __fastcall SafeGetMouseCursorPos(void);
extern DELPHI_PACKAGE System::UnicodeString __fastcall GetEhLibGUISysInfoAsString(void);
extern DELPHI_PACKAGE System::UnicodeString __fastcall GetEhLibFullSysInfoAsString(void);
} /* 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
#pragma pack(pop)
#pragma option pop
#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif // EhLib_VCLHPP
Подробнее здесь: [url]https://stackoverflow.com/questions/79304891/c-builder-error-vcl-buttons-hpp44-candidate-found-by-name-lookup-is-vcl[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия