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:

    1. Im wxFormBuilder habe ich die GUI zusammengeklickt und den Code Generiert.
    2. Anschliesend die beiden generierten Dateien in VS gezogen
    3. 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 Teil

    1>------ 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.propsimportiert?



  • 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 nonamekaputt ist, können wir dir erst sagen, wenn du uns den entsprechenden code zeigst. Das scheint es so nicht zu geben.
    Für den shared_ptr fehlt der include include <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 nonamesondern MyFrame1

    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" und nonmae ->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 MyFrame1erwartet einen Pointer auf ein Parent Fenster. Wenn das ein Toplevel Window ist kannst du

    std::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).


Anmelden zum Antworten