Могу ли я по-прежнему использовать wxIndustrialControls для wxWidgets? Ошибка LNK2019 - PullRequest
0 голосов
/ 29 апреля 2020

Для 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   

...