Проблемы wxTheApp: необъявленный идентификатор с использованием msvc10

Какой заголовочный файл включить для этого указателя? Я хочу сделать простое диалоговое окно с двумя кнопками "Hello world" и "Close". Но для функции OnClose я набрал внутри нее wxTheApp->Exit(), и мой компилятор msvc10 говорит: «необъявленный идентификатор: wxTheApp». Я также включил wx\app.h в программу, но теперь, хотя эта часть компилируется нормально, она показывает сотни ошибок в файлах obj файлов, которые я включил в проект. Одной из таких ошибок является HelloframeGUI.obj: ошибка LNK2001: неразрешенный внешний символ "public: virtual enum wxLayoutDirection __cdecl wxWindow::GetLayoutDirection(void)const" (?GetLayoutDirection@wxWindow@@UEBA?AW4wxLayoutDirection@@XZ)

Кто-нибудь может помочь, пожалуйста?

#include "HelloframeGUI.h"
#include "wx/msgdlg.h"
#include "wx/app.h"

HelloframeGUI::HelloframeGUI( wxWindow* parent )
:
Helloframe( parent )
{

}

void HelloframeGUI::OnShowMessage( wxCommandEvent& event )
{
    wxMessageBox( wxT("wxFormBuilder Tutorial") );// TODO: Implement OnShowMessage
}

void HelloframeGUI::OnClose( wxCommandEvent& event )
{
    wxTheApp->Exit();// TODO: Implement OnClose
}

person Rajan Prasad    schedule 03.10.2011    source источник
comment
Вы сказали, что после включения wx\app.h у вас больше нет ошибки необъявленного идентификатора, так зачем использовать это в качестве заголовка? Эти ошибки являются ошибками компоновщика. Скорее всего вы 1) не скомпилировали библиотеки wxWidgets, или 2) добавили имена и каталоги этих lib-файлов в настройки вашего проекта.   -  person JohnPS    schedule 03.10.2011


Ответы (2)


Похоже проблема с wxTheApp решена. Во всяком случае, я обычно использую для этого wxGetApp(): wxGetApp().Close(). wxGetApp требует включения h-файла приложения (должен быть частью вашего проекта). Что касается ошибок компоновщика, это список минимально необходимых библиотек wxWidgets:

#ifdef _DEBUG
#pragma comment (lib, "wxmsw28ud_core.lib")
#pragma comment (lib, "wxbase28ud.lib")
#else
#pragma comment (lib, "wxmsw28u_core.lib")
#pragma comment (lib, "wxbase28u.lib")
#endif

#pragma comment (lib, "comctl32.lib")
#pragma comment (lib, "rpcrt4.lib")

Добавьте его в один из файлов .cpp. Если ваш проект не Unicode, удалите "u" из имен библиотек.

person Alex F    schedule 03.10.2011

Вот подробное руководство по созданию приложения wxWidgets с помощью Microsoft Visual C++.

http://wiki.wxwidgets.org/Microsoft_Visual_C%2B%2B_Guide

person ravenspoint    schedule 03.10.2011
comment
Я сделал то, что сказано на сайте. но во время сборки он показывает ошибку во всех тех исходных файлах или файлах заголовков, которые hv wx/wxprec.h показывают Нет такого файла или каталога. Я имею в виду, я полагаю, что в идеале компилятор msvc должен искать в группе каталогов, переданных в его пути включения (что я уже сделал), но он вслепую выдает вышеупомянутую ошибку. Я не знаю почему. В любом случае спасибо за помощь - person Rajan Prasad; 03.10.2011
comment
wx/wxprec.h, показывающий, что нет такого файла или каталога, является вашей настоящей проблемой. - person ravenspoint; 03.10.2011
comment
Что ж. на самом деле все было. до вчерашнего дня. затем я провел всю прошлую ночь, создавая 20 библиотек по отдельности, сначала для 32-битной, затем 64-битной, затем 32-битной .... затем также для выпускных версий. и с еще несколькими хитростями, теперь это работает. спасибо, много .... действительно спасибо за ваше время ... - person Rajan Prasad; 04.10.2011
comment
Правильная установка графического интерфейса всегда занимает много времени. Я пробовал несколько, и wxWidgets проще, чем некоторые другие. Голосование и «принятие» будут оценены. - person ravenspoint; 04.10.2011