Для wxIndustrialControls он старый, но я хотел знать, работает ли он до сих пор. «Почему бы тебе не попробовать это самому?». Ну, я сделал. Это то, что происходит
Во-первых, здесь ссылка на источник, если кто-то хочет ее увидеть https://sourceforge.net/projects/wxsmithaddons/files/KWIC/ Имя файла: "kwxIndControlSource-0.3.0"
Я сделал папка в каталоге include для wxWidgets, которая называется "kwi c".
Например, в моем проекте я пытаюсь создать LCDDisplay. Поэтому я делаю
#include "kwic/LCDWindow.h"
Затем я объявляю свой объект в переменных заголовка следующим образом
kwxLCDDisplay* test;
Затем в моем cpp
test = new kwxLCDDisplay(this, wxPoint(0, 0), wxSize(100, 100));
(В загруженном файле есть документация, показывающая, как вы создаете каждый виджет)
Нет ошибок ни с чем. Я go для компиляции и запуска, и я получаю
"Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol "public: __thiscall kwxLCDDisplay::kwxLCDDisplay(class wxWindow *,class wxPoint const &,class wxSize const &)" (??0kwxLCDDisplay@@QAE@PAVwxWindow@@ABVwxPoint@@ABVwxSize@@@Z) referenced in function "public: __thiscall MyFrame::MyFrame(void)" (??0MyFrame@@QAE@XZ) eBikeSimulator "Directory of my computer to MyFrame.obj 1"
Я читаю "LNK2019 может произойти, когда объявление существует в заголовочном файле, но соответствующее определение не реализовано". Я проверил файлы LCDWindow.h и cpp, и все они, кажется, там. Есть идеи о том, что мне не хватает? Я чувствую, что, может быть, просто не знаю, как настроить файлы?
Редактировать: обновлено, я исправил эту проблему, а затем получил устаревшее сообщение о методах, поэтому я обновил библиотеку самостоятельно, после чего файл заработал. Но теперь я получаю следующее
Severity Code Description Project File Line Suppression State
Error LNK2005 "class wxBrush * test" (?test@@3PAVwxBrush@@A) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "private: static struct wxEventTableEntry const * const kwxLCDDisplay::sm_eventTableEntries" (?sm_eventTableEntries@kwxLCDDisplay@@0QBUwxEventTableEntry@@B) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "protected: int __thiscall kwxLCDDisplay::DigitX(int)" (?DigitX@kwxLCDDisplay@@IAEHH@Z) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "protected: int __thiscall kwxLCDDisplay::DigitY(void)" (?DigitY@kwxLCDDisplay@@IAEHXZ) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "protected: int __thiscall kwxLCDDisplay::GetBitmapHeight(void)" (?GetBitmapHeight@kwxLCDDisplay@@IAEHXZ) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "protected: int __thiscall kwxLCDDisplay::GetBitmapWidth(void)" (?GetBitmapWidth@kwxLCDDisplay@@IAEHXZ) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "protected: int __thiscall kwxLCDDisplay::GetDigitHeight(void)" (?GetDigitHeight@kwxLCDDisplay@@IAEHXZ) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "protected: int __thiscall kwxLCDDisplay::GetDigitWidth(void)" (?GetDigitWidth@kwxLCDDisplay@@IAEHXZ) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "protected: static class wxEventHashTable kwxLCDDisplay::sm_eventHashTable" (?sm_eventHashTable@kwxLCDDisplay@@1VwxEventHashTable@@A) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "protected: static struct wxEventTable const kwxLCDDisplay::sm_eventTable" (?sm_eventTable@kwxLCDDisplay@@1UwxEventTable@@B) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "protected: unsigned char __thiscall kwxLCDDisplay::Decode(char)" (?Decode@kwxLCDDisplay@@IAEED@Z) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "protected: virtual class wxEventHashTable & __thiscall kwxLCDDisplay::GetEventHashTable(void)const " (?GetEventHashTable@kwxLCDDisplay@@MBEAAVwxEventHashTable@@XZ) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "protected: virtual struct wxEventTable const * __thiscall kwxLCDDisplay::GetEventTable(void)const " (?GetEventTable@kwxLCDDisplay@@MBEPBUwxEventTable@@XZ) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "protected: void __thiscall kwxLCDDisplay::DoDrawing(class wxDC *)" (?DoDrawing@kwxLCDDisplay@@IAEXPAVwxDC@@@Z) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "protected: void __thiscall kwxLCDDisplay::DrawDigit(class wxDC *,int,struct wxDigitData *)" (?DrawDigit@kwxLCDDisplay@@IAEXPAVwxDC@@HPAUwxDigitData@@@Z) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "protected: void __thiscall kwxLCDDisplay::DrawSegment(class wxDC *,int,int,bool)" (?DrawSegment@kwxLCDDisplay@@IAEXPAVwxDC@@HH_N@Z) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "protected: void __thiscall kwxLCDDisplay::DrawTwoDots(class wxDC *,int)" (?DrawTwoDots@kwxLCDDisplay@@IAEXPAVwxDC@@H@Z) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "protected: void __thiscall kwxLCDDisplay::OnPaint(class wxPaintEvent &)" (?OnPaint@kwxLCDDisplay@@IAEXAAVwxPaintEvent@@@Z) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "protected: void __thiscall kwxLCDDisplay::OnSize(class wxSizeEvent &)" (?OnSize@kwxLCDDisplay@@IAEXAAVwxSizeEvent@@@Z) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "public: class wxColour __thiscall kwxLCDDisplay::GetGrayColour(void)" (?GetGrayColour@kwxLCDDisplay@@QAE?AVwxColour@@XZ) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "public: class wxColour __thiscall kwxLCDDisplay::GetLightColour(void)" (?GetLightColour@kwxLCDDisplay@@QAE?AVwxColour@@XZ) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "public: class wxString __thiscall kwxLCDDisplay::GetValue(void)" (?GetValue@kwxLCDDisplay@@QAE?AVwxString@@XZ) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "public: int __thiscall kwxLCDDisplay::GetDigitsNeeded(class wxString)" (?GetDigitsNeeded@kwxLCDDisplay@@QAEHVwxString@@@Z) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "public: int __thiscall kwxLCDDisplay::GetNumberDigits(void)" (?GetNumberDigits@kwxLCDDisplay@@QAEHXZ) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "public: virtual __thiscall kwxLCDDisplay::~kwxLCDDisplay(void)" (??1kwxLCDDisplay@@UAE@XZ) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "public: void __thiscall kwxLCDDisplay::SetGrayColour(class wxColour)" (?SetGrayColour@kwxLCDDisplay@@QAEXVwxColour@@@Z) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "public: void __thiscall kwxLCDDisplay::SetLightColour(class wxColour)" (?SetLightColour@kwxLCDDisplay@@QAEXVwxColour@@@Z) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "public: void __thiscall kwxLCDDisplay::SetNumberDigits(int)" (?SetNumberDigits@kwxLCDDisplay@@QAEXH@Z) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "public: void __thiscall kwxLCDDisplay::SetValue(class wxString)" (?SetValue@kwxLCDDisplay@@QAEXVwxString@@@Z) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK2005 "public: __thiscall kwxLCDDisplay::kwxLCDDisplay(class wxWindow *,class wxPoint const &,class wxSize const &)" (??0kwxLCDDisplay@@QAE@PAVwxWindow@@ABVwxPoint@@ABVwxSize@@@Z) already defined in MyFrame.obj MyDirectory\MyApp.obj 1
Error LNK1169 one or more multiply defined symbols found application.exe 1