Pomoc przy tworzeniu szkieletu aplikacji c++ i frameworku wxwidgets 3 - brakująca zakładka we właściwościach projektu

0

Wpadła mi w ręce książka pt. programowanie wieloplatfromowe z c++ i wxwidgets.
Chciałem odpalić sobie prosty program w visual studio 2019, niestety ugrzązłem na pewnym problemie. Otóż przy konfiguracji projektu w oknie Property Pages nie ma w ogóle zakładki Resources!
Dodam, że zakładki c/c++ też nie było wcześniej dopóki nie utworzyłem pliku z rozszerzeniem .cpp
Czy ktoś spotkał się z podobnym problemem?

1

Tu i tu masz opisane, jak skonfigurować środowisko.

0

Błąd jest taki, że dajesz wszystko w nagłówku, a powinno być tak (w każdym razie tak pamiętam):

main.h

#ifndef INCLUDED_MAIN_H
#define INCLUDED_MAIN_H
#include "wx/wxprec.h"
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif

class MyApp : public wxApp {

public:
	virtual bool OnInit();
};

class MyFrame : public wxFrame {
public:
	MyFrame(const wxString& title);
};

DECLARE_APP(MyApp)

#endif

main.cpp

#include "main.h"

const wxString appName = "First app using wxWidgets";

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit() {
	MyFrame* frame = new MyFrame(appName);
	frame->Show(true);
	return true;
}

MyFrame::MyFrame(const wxString& title)
	:wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(600, 400) 
{
	CenterOnScreen();
}

Konfiguracji projektu nie sprawdzałem, bo siedzę na Linuksie teraz.

0

Mimo moich najszczerszych chęci nie udało mi się sprawić, żeby ten projekt zadziałał.Dalej to samo:

1>------ Build started: Project: wxWidgetsApp, Configuration: Release x64 ------
1>main.cpp
1>G:\C++_PROJECTS\wxWidgetsApp\main.cpp(16,18): error C2059: syntax error: ';'
1>G:\C++_PROJECTS\wxWidgetsApp\main.cpp(17,1): error C2059: syntax error: '}'
1>G:\C++_PROJECTS\wxWidgetsApp\main.cpp(18,1): error C2630: ';' found in what should be a comma-separated list
1>G:\C++_PROJECTS\wxWidgetsApp\main.cpp(18,1): error C2612: trailing 'end of file' illegal in base/member initializer list
1>G:\C++_PROJECTS\wxWidgetsApp\main.cpp(18,1): fatal error C1004: unexpected end-of-file found
1>Done building project "wxWidgetsApp.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Zrobiłem tak @_0x666_ jak napisałeś w tym podziale z plikami.

0

Ogólnie nie rozumiem dlaczego jest tyle bebrania się, żeby jeden framework dołączyć do visual studio. Ilość miejsc, gdzie można popełnić błąd przy konfiguracji jest ogromna. A ja chciałbym po prostu stworzyć szkielet tej appki skonfigurowanej i żeby można to było ściągnąć, zaimportować i zbudować i skompilować na vs studio 2019.

0

W plikach do ściągnięcia masz przecież plik .props z konfiguracją. W zasadzie nie trzeba ręcznie tego robić. Źródła wyglądają ok, więc coś jest nie tak z konfiguracją projektu.

W opcjach projektu wyłącz prekompilację nagłówków (może coś zmieni).

0
0x666 napisał(a):

W plikach do ściągnięcia masz przecież plik .props z konfiguracją. W zasadzie nie trzeba ręcznie tego robić. Źródła wyglądają ok, więc coś jest nie tak z konfiguracją projektu.

W opcjach projektu wyłącz prekompilację nagłówków (może coś zmieni).

Zainstalowałem vs 2015, odinstalowałem tamtą wersję wxwidgets i zainstalowałem wersję 3.0.3.
Teraz wchodząc w Property Pages w ogóle nie ma zakładki Resources. Nie rozumiem czemu raz ona jest, a raz nie ma.

EDIT:
Teraz pojawiła się ta zakładka. Zobaczymy co będzie

0
0x666 napisał(a):

Błąd jest taki, że dajesz wszystko w nagłówku, a powinno być tak (w każdym razie tak pamiętam):

main.h

#ifndef INCLUDED_MAIN_H
#define INCLUDED_MAIN_H
#include "wx/wxprec.h"
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif

class MyApp : public wxApp {

public:
	virtual bool OnInit();
};

class MyFrame : public wxFrame {
public:
	MyFrame(const wxString& title);
};

DECLARE_APP(MyApp)

#endif

main.cpp

#include "main.h"

const wxString appName = "First app using wxWidgets";

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit() {
	MyFrame* frame = new MyFrame(appName);
	frame->Show(true);
	return true;
}

MyFrame::MyFrame(const wxString& title)
	:wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(600, 400) 
{
	CenterOnScreen();
}

Konfiguracji projektu nie sprawdzałem, bo siedzę na Linuksie teraz.
Zrobiłem nowy projekt w vs 2015, zainstalowałem wersję wxwidget 3.0.3 (a poprzednią odinstalowałem) i wrzuciłem do tych dwóch plików main.cpp i main.h tak jak napisałeś.
Teraz mi wyrzuca praktycznie błąd na błędzie:
Severity Code Description Project File Line Suppression State
Error C2059 syntax error: '}' wxWidgetApp G:\wxWidgetsProjects\wxWidgetsApp\wxWidgetApp\main.cpp 17
Error (active) __w64 can only be specified on int, long, and pointer types wxWidgetApp c:\wxWidgets-3.0.4\include\wx\defs.h 1301
Error (active) expected a ')' wxWidgetApp g:\wxWidgetsProjects\wxWidgetsApp\wxWidgetApp\main.cpp 15
Error (active) expected a '{' wxWidgetApp g:\wxWidgetsProjects\wxWidgetsApp\wxWidgetApp\main.cpp 17
Error C2059 syntax error: ';' wxWidgetApp G:\wxWidgetsProjects\wxWidgetsApp\wxWidgetApp\main.cpp 16
Error C2630 ';' found in what should be a comma-separated list wxWidgetApp G:\wxWidgetsProjects\wxWidgetsApp\wxWidgetApp\main.cpp 18
Error C2612 trailing 'end of file' illegal in base/member initializer list wxWidgetApp G:\wxWidgetsProjects\wxWidgetsApp\wxWidgetApp\main.cpp 18
Error C1004 unexpected end-of-file found wxWidgetApp G:\wxWidgetsProjects\wxWidgetsApp\wxWidgetApp\main.cpp 18

0
MyFrame::MyFrame(const wxString& title)
  :wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(600, 400)) // <--- brakowało )
{
  CenterOnScreen();
}
0
0x666 napisał(a):
MyFrame::MyFrame(const wxString& title)
  :wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(600, 400)) // <--- brakowało )
{
  CenterOnScreen();
}

Rzeczywiście, ale
teraz mam jakiś durny błąd:
Severity Code Description Project File Line Suppression State
Error TRK0005 Failed to locate: "rc.exe". Nie można odnaleźć określonego pliku. wxWidgetApp G:\wxWidgetsProjects\wxWidgetsApp\wxWidgetApp\TRACKER 1

Dobra teraz się skompilowało, ale przy uruchamianiu to mi się pojawia:
https://drive.google.com/open?id=1qjrbgbEoZUCaBzeU9Iji13-JNAicgwC4
Srry, że tak głowę zawracam na święta, ale dopiero teraz mam chwilę, żeby pokodzić trochę

0

Wygląda jak jakieś niezgodności biblioteki z wersją kompilatora/środowiska. Ciężko powiedzieć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1