WXFormBuilder und Visual Studio 2019 Tutorial?
-
Wäre jemand von Euch so freundlich und könnte mir behilflich sein. Habt ihr ein Tutorial wie ich im WxFormBuilder erstellten Code für die GUI in Visual Studio 2019 einfügen kann und es auch kompiliert wird?
Gern auch mit einem WXWidgets Designer.
Edit: Folgendes habe ich derzeit:
- Im wxFormBuilder habe ich die GUI zusammengeklickt und den Code Generiert.
- Anschliesend die beiden generierten Dateien in VS gezogen
- Mein Projekt beinhaltet:
MainWindow.cpp
#include "MainWindow.h" wxIMPLEMENT_APP(MainWindow); bool MainWindow::OnInit() { noname = std::make_shared<noname>(); nonmae ->Show(); return true; }
MainWindow.h
#pragma once #include "wx/wx.h" #include "nomame.h" class MainWindow : public wxApp { public: MainWindow(); ~MainWindow(); virtual bool OnInit(); private: std::shared_ptr<noname> noname; };
-
Was genau ist dein Problem? Bitte mach Copy & Paste der Fehlermeldungen.
Die Glaskugel vermutet, dass dein VS Projekt die Bibliotheksabhängigkeiten nicht kennt (include dirs, pfad zu libs, linker direktive etc).
Google schlägt folgendes Video vor: https://www.youtube.com/watch?v=sRhoZcNpMb4 ich habe das mir jetzt aber nicht angeguckt und kann das daher nicht bewerten.
-
Die Bibliotheksabhängigkeiten habe ich eingebunden, genauso wie im Video
Ich kann das ganze nicht kompilieren, bekomme folgende Fehlermeldungen:
Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand Fehler (aktiv) E0077 Diese Deklaration hat keine Speicherklasse oder keinen Typspezifizierer. WinInfosC++ C:\Users\humbidu\source\repos\WinInfosC++\MainWindow.h 13 Fehler (aktiv) E1696 Die Datei "Quelle" kann nicht geöffnet werden: "nomame.h". WinInfosC++ C:\Users\humbidu\source\repos\WinInfosC++\MainWindow.h 3 Fehler (aktiv) E0020 Der Bezeichner ""noname"" ist nicht definiert. WinInfosC++ C:\Users\humbidu\source\repos\WinInfosC++\MainWindow.cpp 6 Fehler (aktiv) E0135 "namespace "std"" hat keinen Member ""make_shared"". WinInfosC++ C:\Users\humbidu\source\repos\WinInfosC++\MainWindow.cpp 6 Fehler (aktiv) E0029 Es wurde ein Ausdruck erwartet. WinInfosC++ C:\Users\humbidu\source\repos\WinInfosC++\MainWindow.cpp 6 Fehler (aktiv) E0020 Der Bezeichner ""nonmae"" ist nicht definiert. WinInfosC++ C:\Users\humbidu\source\repos\WinInfosC++\MainWindow.cpp 7 Fehler (aktiv) E0135 "namespace "std"" hat keinen Member ""shared_ptr"". WinInfosC++ C:\Users\humbidu\source\repos\WinInfosC++\MainWindow.h 13 Fehler (aktiv) E0065 Es wurde ein ";" erwartet. WinInfosC++ C:\Users\humbidu\source\repos\WinInfosC++\MainWindow.h 13 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_ANY must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 88 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_COMPILER_TLS must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 96 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_CONSOLE_EVENTLOOP must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 104 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_DYNLIB_CLASS must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 112 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_EXCEPTIONS must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 120 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_FILE_HISTORY must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 128 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_FILESYSTEM must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 136 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_FS_ARCHIVE must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 144 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_FSVOLUME must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 152 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_FSWATCHER must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 160 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_DYNAMIC_LOADER must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 168 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_INTL must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 176 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_IPV6 must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 184 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_LOG must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 192 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_LONGLONG must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 200 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_MIMETYPE must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 208 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_ON_FATAL_EXCEPTION must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 216 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_PRINTF_POS_PARAMS must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 224 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_PROTOCOL must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 232 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_REGEX must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 274 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_SECRETSTORE must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 282 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_STDPATHS must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 290 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_XML must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 298 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_SOCKETS must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 306 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_STD_CONTAINERS must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 314 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_STD_CONTAINERS_COMPATIBLY must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 322 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_STD_STRING_CONV_IN_WXSTRING must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 330 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_STREAMS must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 338 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_STOPWATCH must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 346 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_TEXTBUFFER must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 354 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_TEXTFILE must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 362 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_UNSAFE_WXSTRING_CONV must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 378 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_URL must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 386 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_VARIANT must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 394 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_XLOCALE must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 402 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_ACTIVEX must be defined." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\msw\chkconf.h 26 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_WINRT must be defined." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\msw\chkconf.h 34 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_CRASHREPORT must be defined." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\msw\chkconf.h 42 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_DBGHELP must be defined" WinInfosC++ C:\wxWidgets-3.1.4\include\wx\msw\chkconf.h 50 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_DC_CACHEING must be defined" WinInfosC++ C:\wxWidgets-3.1.4\include\wx\msw\chkconf.h 58 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_DIALUP_MANAGER must be defined." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\msw\chkconf.h 66 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_MS_HTML_HELP must be defined." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\msw\chkconf.h 74 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_INICONF must be defined." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\msw\chkconf.h 82 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_OLE must be defined." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\msw\chkconf.h 90 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_OLE_AUTOMATION must be defined." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\msw\chkconf.h 98 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_TASKBARICON_BALLOONS must be defined." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\msw\chkconf.h 106 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_TASKBARBUTTON must be defined." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\msw\chkconf.h 114 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_UXTHEME must be defined." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\msw\chkconf.h 122 Fehler (aktiv) E0035 #error-Direktive: "wxUSE_WINSOCK2 must be defined." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\msw\chkconf.h 130 Fehler C1189 #error: "wxUSE_ANY must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 88 Fehler C1189 #error: "wxUSE_ANY must be defined, please read comment near the top of this file." WinInfosC++ C:\wxWidgets-3.1.4\include\wx\chkconf.h 88
-
@humbidu sagte in WXFormBuilder und Visual Studio 2019 Tutorial?:
bekomme folgende Fehlermeldungen:
Nein, das ist nur eine Zusammenfassung.
Entscheidend ist das Output-Tab, und darin die erste Meldung.
-
Hab jetzt mal neue noname.cpp und noname.h erstellt und den Text hineinkopiert und die alten gelöscht.
Hier mein Output Teil1>------ Erstellen gestartet: Projekt: WinInfosC++, Konfiguration: Debug Win32 ------ 1>MainWindow.cpp 1>C:\wxWidgets-3.1.4\include\wx\chkconf.h(88,1): fatal error C1189: #error: "wxUSE_ANY must be defined, please read comment near the top of this file." 1>noname.cpp 1>C:\wxWidgets-3.1.4\include\wx\chkconf.h(88,1): fatal error C1189: #error: "wxUSE_ANY must be defined, please read comment near the top of this file." 1>Code wird generiert... 1>Die Erstellung des Projekts "WinInfosC++.vcxproj" ist abgeschlossen -- FEHLER. ========== Erstellen: 0 erfolgreich, 1 fehlerhaft, 0 aktuell, 0 übersprungen ==========
-
@humbidu sagte in WXFormBuilder und Visual Studio 2019 Tutorial?:
read comment near the top of this file
-
Das habe ich gemacht, doch verstehe ich nicht warum? Habe das ganze doch heute erst erstellt. Damit dürfte die Setup.h doch aktuell sein?
Soll ich die jetzt einfach löschen und neu kompilieren?
-
@humbidu Hast du mal eins der Samples kompiliert? Das ist erstmal ein guter Startpunkt ob wxWidgets insgesamt ordentlich kompiliert ist und funktioniert.
Insgesamt klingt das für mich nach wie vor als ob wxWidgets nicht richtig in dein Projekt eingebunden ist. Hast du die
wxwidgets.props
importiert?
-
Habe jetzt zu Hause an meinem Rechner, das gleiche nochmal eingefügt. Jetzt sind die oben genannten Fehler verschwunden, allerdings bekomme ich beim kompilieren folgende Meldung:
1>------ Erstellen gestartet: Projekt: WXWidgetsTest, Konfiguration: Debug Win32 ------ 1>MainWindow.cpp 1>C:\Users\User\source\repos\WXWidgetsTest\MainWindow.h(13,18): error C2065: "noname": nichtdeklarierter Bezeichner 1>C:\Users\User\source\repos\WXWidgetsTest\MainWindow.h(13,7): error C2923: "std::shared_ptr": "noname" ist kein gültiges Vorlage-Typargument für den _Ty-Parameter. 1>C:\Users\User\source\repos\WXWidgetsTest\MainWindow.cpp(6,16): error C2672: "std::make_shared": keine übereinstimmende überladene Funktion gefunden 1>C:\Users\User\source\repos\WXWidgetsTest\MainWindow.cpp(6,36): error C2974: "std::make_shared": Ungültiges Vorlage-Argument für "_Ty", Typ erwartet. 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\memory(2071): message : Siehe Deklaration von "std::make_shared" 1>C:\Users\User\source\repos\WXWidgetsTest\MainWindow.cpp(7,2): error C2065: "nonmae": nichtdeklarierter Bezeichner 1>Die Erstellung des Projekts "WXWidgetsTest.vcxproj" ist abgeschlossen -- FEHLER. ========== Erstellen: 0 erfolgreich, 1 fehlerhaft, 0 aktuell, 0 übersprungen ==========
-
was mit deiner
noname
kaputt ist, können wir dir erst sagen, wenn du uns den entsprechenden code zeigst. Das scheint es so nicht zu geben.
Für denshared_ptr
fehlt der includeinclude <memory>
.
-
Die noname.cpp und noname.h Datei ist die, welcher mit der WxFormBuilder ausgespuckt hat.
Hier die noname.cpp/////////////////////////////////////////////////////////////////////////// // C++ code generated with wxFormBuilder (version Oct 26 2018) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! /////////////////////////////////////////////////////////////////////////// #include "noname.h" /////////////////////////////////////////////////////////////////////////// MyFrame1::MyFrame1(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxFrame(parent, id, title, pos, size, style) { this->SetSizeHints(wxDefaultSize, wxDefaultSize); wxBoxSizer* bSizer1; bSizer1 = new wxBoxSizer(wxVERTICAL); m_textCtrl1 = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); bSizer1->Add(m_textCtrl1, 0, wxALL, 5); m_textCtrl2 = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); bSizer1->Add(m_textCtrl2, 0, wxALL, 5); m_textCtrl3 = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); bSizer1->Add(m_textCtrl3, 0, wxALL, 5); m_textCtrl4 = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); bSizer1->Add(m_textCtrl4, 0, wxALL, 5); m_textCtrl5 = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); bSizer1->Add(m_textCtrl5, 0, wxALL, 5); this->SetSizer(bSizer1); this->Layout(); this->Centre(wxBOTH); } MyFrame1::~MyFrame1() { }
und hier die noname.h
/////////////////////////////////////////////////////////////////////////// // C++ code generated with wxFormBuilder (version Oct 26 2018) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! /////////////////////////////////////////////////////////////////////////// #pragma once #include <wx/artprov.h> #include <wx/xrc/xmlres.h> #include <wx/string.h> #include <wx/textctrl.h> #include <wx/gdicmn.h> #include <wx/font.h> #include <wx/colour.h> #include <wx/settings.h> #include <wx/sizer.h> #include <wx/frame.h> /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /// Class MyFrame1 /////////////////////////////////////////////////////////////////////////////// class MyFrame1 : public wxFrame { private: protected: wxTextCtrl* m_textCtrl1; wxTextCtrl* m_textCtrl2; wxTextCtrl* m_textCtrl3; wxTextCtrl* m_textCtrl4; wxTextCtrl* m_textCtrl5; public: MyFrame1(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(500, 300), long style = wxDEFAULT_FRAME_STYLE | wxTAB_TRAVERSAL); ~MyFrame1(); };
#include <memory>
habe ich eingefügt, doch die Ausgabe ist die gleich wie oben beim kompilieren
-
Deine Klasse heißt ja auch nicht
noname
sondernMyFrame1
Also änder mal alle
<noname>
in<MyFrame1>
.Im FormBuilder kannst du bestimmt auch die Dateinamen ändern, das klingt mir sehr nach einem unbenannten Projekt oder so was.
-
@humbidu sagte in WXFormBuilder und Visual Studio 2019 Tutorial?:
noname = std::make_shared<noname>();
std::shared_ptr<noname> noname;
Da passen die Bezeichner aber nicht. Man kann nicht für den Typen und den Variablennamen denselben Bezeichner benutzen. Sollte da nicht
MyFrame1
als Typ stehen?PS: Und woher kommen die Falschschreibungen
#include "nomame.h"
undnonmae ->Show();
? Ist das wirklich der generierte Code oder hast du den hier für's Forum verändert?
-
@Th69
Das mit den Typen habe ich verändert.Wegen den unterschiedlichen Schreibweisen. Mein Tutorial wo ich hatte, nahm andere Namen (da hieß es editor) und beim Umschreiben habe ich mich vertippt.
Die Meldungen sind alle weg, jetzt bekomme ich nur noch die Meldung:
1>------ Erstellen gestartet: Projekt: WXWidgetsTest, Konfiguration: Debug Win32 ------ 1>MainWindow.cpp 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\xmemory(230,12): error C2512: "MyFrame1::MyFrame1": Kein geeigneter Standardkonstruktor verfügbar 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\memory(1427): message : Siehe Verweis auf die gerade kompilierte Instanziierung "void std::_Construct_in_place<_Ty,>(_Ty &) noexcept(false)" der Funktions-Vorlage. 1> with 1> [ 1> _Ty=MyFrame1 1> ] 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\memory(2071): message : Siehe Verweis auf die gerade kompilierte Instanziierung "std::_Ref_count_obj2<_Ty>::_Ref_count_obj2<>(void)" der Funktions-Vorlage. 1> with 1> [ 1> _Ty=MyFrame1 1> ] 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\memory(2072): message : Siehe Verweis auf die gerade kompilierte Instanziierung "std::_Ref_count_obj2<_Ty>::_Ref_count_obj2<>(void)" der Funktions-Vorlage. 1> with 1> [ 1> _Ty=MyFrame1 1> ] 1>C:\Users\User\source\repos\WXWidgetsTest\MainWindow.cpp(7): message : Siehe Verweis auf die gerade kompilierte Instanziierung "std::shared_ptr<MyFrame1> std::make_shared<MyFrame1,>(void)" der Funktions-Vorlage. 1>Die Erstellung des Projekts "WXWidgetsTest.vcxproj" ist abgeschlossen -- FEHLER. ========== Erstellen: 0 erfolgreich, 1 fehlerhaft, 0 aktuell, 0 übersprungen ==========
-
@humbidu
MyFrame1
erwartet einen Pointer auf ein Parent Fenster. Wenn das ein Toplevel Window ist kannst dustd::make_shared<noname>(nullptr);
verwenden. Die anderen Parameter haben einen Default Wert.
Mich beschleicht das Gefühl, dass du noch nicht genug Ahnung von c++ hast um sinnvoll Oberflächenprogrammierung zu betreiben.Edit: Woher hast du die Idee mit dem shared_ptr? Prinzipiell ist es zwar richtig nicht mit rohen besitzenden Pointern zu arbeiten, aber wxWidgets sorgt eigentlich dafür, dass es die Fenster richtig aufräumt (solange die Parent struktur stimmt).
Daher eigentlich:
noname = new MyFrame1(nullptr); noname->Show(true);
und
private: MyFrame1* noname;
-
@Schlangenmensch
Die Idee habe ich von hier:
https://developer-blog.net/wxwidgets-mit-c-teil-1/Habe das ganze mal nach deiner Methode gemacht und bekomme jetzt die Meldung:
1>------ Erstellen gestartet: Projekt: WXWidgetsTest, Konfiguration: Debug Win32 ------ 1>MainWindow.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall MainWindow::MainWindow(void)" (??0MainWindow@@QAE@XZ)" in Funktion ""class wxAppConsole * __cdecl wxCreateApp(void)" (?wxCreateApp@@YAPAVwxAppConsole@@XZ)". 1>C:\Users\User\source\repos\WXWidgetsTest\Debug\WXWidgetsTest.exe : fatal error LNK1120: 1 nicht aufgelöste Externe 1>Die Erstellung des Projekts "WXWidgetsTest.vcxproj" ist abgeschlossen -- FEHLER. ========== Erstellen: 0 erfolgreich, 1 fehlerhaft, 0 aktuell, 0 übersprungen ==========
Allerdings sind die Libs richtig verknüpft und unter Subsystem habe ich Windows ausgewählt
-
@humbidu Der Link geht nicht.
Das heißt jetzt kompiliert es, jetzt beschwert sich noch der Linker. Das klingt so, als ob die Pfade zu den Libraries falsch sind / die Projektkonfigs nicht stimmen.
-
Hab die Pfade nochmals kopiert, hatte ein "c" vergessen, aber nun bekomme ich diese folgende Meldung:
1>------ Erstellen gestartet: Projekt: WXWidgetsTest, Konfiguration: Debug Win32 ------ 1>LINK : fatal error LNK1104: Datei "wxbase31ud.lib" kann nicht geöffnet werden. 1>Die Erstellung des Projekts "WXWidgetsTest.vcxproj" ist abgeschlossen -- FEHLER. ========== Erstellen: 0 erfolgreich, 1 fehlerhaft, 0 aktuell, 0 übersprungen ==========
PS: Der richtige Link:
https://developer-blog.net/wxwidgets-mit-c-teil-2/
-
@humbidu Da wird die wxWidgets lib nicht gefunden. Steht doch im Prinzip da. Wenn du die wxwidgets.props importiert hast, wunder mich das aber etwas.
Es kann sein, dass die nach einer Umgebungsvariable auflöst, die nicht gesetzt wurde.
Überprüf doch mal was in den "Projekteigenschaften -> Linker -> Zusätzliche Bibliotheksverzeichnisse" was da als Pfad zu den wxWidgets Libs steht.
Edit: In dem Tutorial steht, dass man für die Verwendung von Smartpointern im Zusammenhang mit wxWidgtes den delete operator überschreiben muss. Das ist etwas von dem ich dringend abrate. Denn hinterher will man für richtige Pointer Smartpointer nutzen und dann arbeiten die nicht mehr wie erwartet. Aber es steht da und hättest du dich an das Tutorial gehalten, hätte es funktioniert.
-
@Schlangenmensch sagte in WXFormBuilder und Visual Studio 2019 Tutorial?:
Libs
Habe jetzt die libs neu kompiliert aber immer noch bekomme ich die Fehlermeldung.
Habe die Umgebungsvariablen auch angeschaut und lösen richtig auf (kann man ja gut überprüfen).
-
Ein anderes Projekt wurde richtig kompiliert und nun habe ich mal alle Einstellungen mit diesem abgeglichen, doch das neue bringt weiterhin den Fehler.