2013-03-05 3 views
4

Я пытаюсь построить this wxWidgets sample program с помощью Code :: Blocks 12.11, но сборка завершилась неудачно, несмотря ни на что.Создание программы wxWidgets в Code :: Blocks

Например, журнал сборка показывает следующее (проект находится в X: \ программирование \ C++ \ HelloWxWidgets).

mingw32-г ++ ех -Wall -fexceptions -g -D_ gnuwin32 _ -D_ WXMSW _ -DwxUSE_UNICODE -D_ WXDEBUG _ -IC: \ libraries \ wxWidgets-2.8.12.01 \ include -IC: \ libraries \ wxWidgets-2.8.12.01 \ contrib \ include -IC: \ libraries \ wxWidgets -2.8.12.01 \ lib \ gcc_lib \ mswud -c X: \ programming \ C++ \ HelloWxWidgets \ hworld2.cpp -o obj \ Debug2 \ hworld2.o mingw32-g ++. Exe -LC: \ libraries \ wxWidgets-2.8.12.01 \ lib \ gcc_lib -o bin \ Debug2 \ HelloWxWidgets.exe obj \ Debug2 \ hworld2.o -static-libgcc C: \ libraries \ wxWidgets-2.8.12.01 \ lib \ gcc_lib \ libwxmsw28ud.a C: \ libraries \ wxWidgets-2.8.12.01 \ lib \ gcc_lib \ libwxmsw28ud.a (monolib_window.o): В функции ZN8wxWindow6UpdateEv': C:\BuildAgent\work\wxPack\wxwidgets\build\msw/../../src/msw/window.cpp:1643: undefined reference to GdiFlush @ 0' C: \ библиотеки \ WxWidgets-2.8.12.01 \ Lib \ gcc_lib \ libwxmsw28ud.a (monolib_window.o): В функции ZNK8wxWindow13GetTextExtentERK8wxStringPiS3_S3_S3_PK6wxFont': C:\BuildAgent\work\wxPack\wxwidgets\build\msw/../../src/msw/window.cpp:2132: undefined reference to GetTextExtentPoint32W @ 16' C : \ BuildAgent \ работа \ wxPack \ WxWidgets \ построить \ MSW /../../ SRC/MSW/window.cpp: 2133: неопределенная ссылка на `GetTextMetricsW @ 8'

И эти некоторые из строить сообщения, которые я получаю

C: \ libraries \ wxWidgets-2.8.12.01 \ lib \ gcc_lib \ libwxmsw28ud.a (monolib_window.o) || В функции ZN8wxWindow6UpdateEv':| C:\BuildAgent\work\wxPack\wxwidgets\build\msw\..\..\src\msw\window.cpp|1643|undefined reference to GdiFlush @ 0 '| C: \ libraries \ wxWidgets-2.8.12.01 \ lib \ gcc_lib \ libwxmsw28ud.a (monolib_window.o) || В функции ZNK8wxWindow13GetTextExtentERK8wxStringPiS3_S3_S3_PK6wxFont':| C:\BuildAgent\work\wxPack\wxwidgets\build\msw\..\..\src\msw\window.cpp|2132|undefined reference to GetTextExtentPoint32W @ 16 '| C: \ BuildAgent \ work \ wxPack \ wxwidgets \ build \ msw .... \ src \ msw \ window.cpp | 2133 | неопределенная ссылка на `GetTextMetricsW @ 8 '|

Вот полный build log и все из build messages (кстати, у меня нет C: \ каталог BuildAgent)

Я использую wxPack 2.8.12 (устанавливается в C: \ библиотеки \ WxWidgets -2.8.12.01) и GCC 4.7.2 (устанавливается отдельно от Code :: Blocks в C: \ MinGW с помощью mingw-get)

Вот варианты сборки в Code :: Blocks

Заранее спасибо вашей помощи :)

+0

Эти определения функции в gdi32.lib. – chris

+0

Да. Похоже, что gdi32 не связан. Убедитесь, что он и его каталог указаны в соответствующих настройках сборки. (Должен быть список библиотек для включения и путей для их поиска.) – cHao

ответ

4

Хорошо, я, наконец, удалось получить его работу :)

Я отправляю здесь процедуру, чтобы следовать, если, как я, кто-то хотел использовать WxWidgets в (первоначально) консольного проекта под Code :: Blocks , При этом, каждый должен иметь возможность строить/запустить по крайней мере this sample code в среде Wind0ws:

  1. Я предполагаю, что код :: Blocks и MinGW: правильно настроить.
  2. Скачать/Установить wxMSW из http://www.wxwidgets.org/downloads/ (в моем случае, я скачал wxMSW-2.8.12-setup.exe и установил его в C: \ библиотеки \ WxWidgets-2.8.12)
  3. Откройте командную строку, WxWidgets должно быть построено, я возьму Exemple из статический связанно, монолитных, отладочных, который использует Unicode (более подробную информацию here):

    кд /DC:\libraries\wxWidgets-2.8.12\build \ msw

    mingw32-make -f makefile.gcc BUILD = debug SHARED = 0 MONOLITHIC = 1 UNICODE = 1

    : (mingw32-макияж потребуется некоторое время, чтобы построить библиотеку)

  4. Open Code :: Blocks

  5. Создать новый консольный проект, или если у вас уже есть консольный проект (и вы планируете добавить к нему графический интерфейс wxWidgets).
  6. Щелкните правой кнопкой мыши по проекту> Параметры сборки
  7. Here are the build options, который я использовал для сборки Debug. Code::Blocks build options for wxWidgets
  8. Сложение & Run

[EDIT] WX/app.h должны быть включены в дополнение к WX/wx.h

#include <wx/wx.h> 
#include <wx/app.h> 
+0

Или просто флаг компоновщика '-mwindows'. Но тогда вы теряете окно терминала, что хорошо для отладки. Вы также можете комбинировать '-mwindows -mconsole'. – user877329

0

Вы, вероятно, нужно добавить следующие настройки LIBS компоновщика (я взял список из VS 2012, но для GCC должен быть одинаковым, вам нужно будет добавить -luuid -luser32 .... в дополнительные параметры компоновщика)

kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.Lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

UPD: могут видеть TAHT Крис предложил добавить gdi32 LIB. Выглядит разумно для меня. Как минимум missing functions из ваших журналов определены там.

+0

Я добавил libs в [настройки компоновщика] (http://i49.tinypic.com/i3if5y.png), но я все равно получаю то же самое ошибки. – 865719

+0

Эти библиотеки должны быть перечислены после wx libs в командной строке компоновщика. Пожалуйста, убедитесь, что wx libs на первом месте, а затем запустите libs, от которых зависит wx libs. Также вы попытались создать проект wxWidgets, используя шаблон дизайна Code :: Blocks wxWidgets и проверить настройки компоновщика нового проекта? –

+0

Я создал еще один проект, используя Code :: Blocks встроенный шаблон проекта wxWidgets: он строит без ошибок, но приложение вылетает (окна не отображаются, и он возвращается сразу после запуска (процесс завершен со статусом -1073741819 (0 минут, 8 секунд)) – 865719

0

Я нашел лучший способ заключается в том, что добавить `` wx-config -libs all` в ваших «других вариантах лайнера», на этом многие проблемы исчезнут.

wxconfig screen shot

Смежные вопросы