wxauinotebook и g++ Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
CatUser13
In need of some credit
In need of some credit
Posts: 7
Joined: Mon Aug 03, 2020 6:19 pm

wxauinotebook и g++

Post by CatUser13 »

Здравствуйте,

После добавления в код объекта типа wxAuiNotebook, не получается скомпилировать свой код.
Команда:

Code: Select all

g++ main.cpp main.h MainFrame.h MainFrame.cpp -o test `wx-config --cxxflags --libs`
Выводит следующее сообщение:

Code: Select all

/usr/bin/ld: /tmp/ccESNiMK.o: в функции «wxAuiNotebook::wxAuiNotebook(wxWindow*, int, wxPoint const&, wxSize const&, long)»:
MainFrame.cpp:(.text._ZN13wxAuiNotebookC2EP8wxWindowiRK7wxPointRK6wxSizel[_ZN13wxAuiNotebookC5EP8wxWindowiRK7wxPointRK6wxSizel]+0x33): неопределённая ссылка на «vtable for wxAuiNotebook»
/usr/bin/ld: MainFrame.cpp:(.text._ZN13wxAuiNotebookC2EP8wxWindowiRK7wxPointRK6wxSizel[_ZN13wxAuiNotebookC5EP8wxWindowiRK7wxPointRK6wxSizel]+0x41): неопределённая ссылка на «vtable for wxAuiNotebook»
/usr/bin/ld: MainFrame.cpp:(.text._ZN13wxAuiNotebookC2EP8wxWindowiRK7wxPointRK6wxSizel[_ZN13wxAuiNotebookC5EP8wxWindowiRK7wxPointRK6wxSizel]+0x68): неопределённая ссылка на «wxAuiManager::wxAuiManager(wxWindow*, unsigned int)»
/usr/bin/ld: MainFrame.cpp:(.text._ZN13wxAuiNotebookC2EP8wxWindowiRK7wxPointRK6wxSizel[_ZN13wxAuiNotebookC5EP8wxWindowiRK7wxPointRK6wxSizel]+0x7a): неопределённая ссылка на «wxAuiTabContainer::wxAuiTabContainer()»
/usr/bin/ld: MainFrame.cpp:(.text._ZN13wxAuiNotebookC2EP8wxWindowiRK7wxPointRK6wxSizel[_ZN13wxAuiNotebookC5EP8wxWindowiRK7wxPointRK6wxSizel]+0xbc): неопределённая ссылка на «wxAuiNotebook::Init()»
/usr/bin/ld: MainFrame.cpp:(.text._ZN13wxAuiNotebookC2EP8wxWindowiRK7wxPointRK6wxSizel[_ZN13wxAuiNotebookC5EP8wxWindowiRK7wxPointRK6wxSizel]+0xe1): неопределённая ссылка на «wxAuiNotebook::Create(wxWindow*, int, wxPoint const&, wxSize const&, long)»
/usr/bin/ld: MainFrame.cpp:(.text._ZN13wxAuiNotebookC2EP8wxWindowiRK7wxPointRK6wxSizel[_ZN13wxAuiNotebookC5EP8wxWindowiRK7wxPointRK6wxSizel]+0x120): неопределённая ссылка на «wxAuiTabContainer::~wxAuiTabContainer()»
/usr/bin/ld: MainFrame.cpp:(.text._ZN13wxAuiNotebookC2EP8wxWindowiRK7wxPointRK6wxSizel[_ZN13wxAuiNotebookC5EP8wxWindowiRK7wxPointRK6wxSizel]+0x13b): неопределённая ссылка на «wxAuiManager::~wxAuiManager()»
collect2: error: ld returned 1 exit status
Собственно, как решить данную проблему? В заголовках я подключил <wx/aui/auibook.h>

Пишу на Ubuntu 19
wxWidgets: 3.0.4
User avatar
T-Rex
Moderator
Moderator
Posts: 1248
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Re: wxauinotebook и g++

Post by T-Rex »

Нужно убедиться что wxWidgets собрана с поддержкой AUI (если собиралась из исходников, есть флаг для configure скрипта)
И можно посмотреть что там wx-config --libs выдает? Есть там AUI библиотека в списке? Если нет, то надо пересобрать wxWidgets.
CatUser13
In need of some credit
In need of some credit
Posts: 7
Joined: Mon Aug 03, 2020 6:19 pm

Re: wxauinotebook и g++

Post by CatUser13 »

wx-config --libs Выдает следующее:

Code: Select all

-I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-3.0 -I/usr/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread
-L/usr/lib/x86_64-linux-gnu -pthread   -lwx_gtk2u_xrc-3.0 -lwx_gtk2u_html-3.0 -lwx_gtk2u_qa-3.0 -lwx_gtk2u_adv-3.0 -lwx_gtk2u_core-3.0 -lwx_baseu_xml-3.0 -lwx_baseu_net-3.0 -lwx_baseu-3.0
Как оказалось достаточно добавить в строчку std,aui, чтобы всё скомпилировалось

Code: Select all

g++ main.cpp main.h MainFrame.h MainFrame.cpp -o test `wx-config --cxxflags --libs std,aui`
Тогда не выдает ошибок, всё компилируется и работает. Можете объяснить почему?
Устанавливал wxWidgets через sudo apt install
User avatar
T-Rex
Moderator
Moderator
Posts: 1248
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Re: wxauinotebook и g++

Post by T-Rex »

Эээ, wx-config --std,aui должен выдавать стандартный список библиотек для wxWidgets и еще и дополнительную библиотеку для AUI. Вроде норм. В параметрах можно явно указать какие именно библиотеки используются приложением (чтобы, например, не использовать лишние или добавить дополнительные).
Post Reply