2016-12-05 1 views
1

Есть ли какие-либо известные проблемы с использованием wxWidgets 3.1.0 на Mac OS X El Capitan (10.11)? Я смог скомпилировать его без проблем, и мой импорт разрешает (без ошибок сборки) для моего образца приложения, но при запуске я получаю мгновенную ошибку сегментации. Я пытаюсь запустить minimal sample, указанный в документации. Он строит без каких-либо ошибок, но когда он запускается, он сразу же падает.wxWidgets 3.1.0 и Mac OS X El Capitan (10.11)

Crashed Thread:  0 Dispatch queue: com.apple.main-thread 

Exception Type:  EXC_BAD_ACCESS (SIGSEGV) 
Exception Codes:  KERN_INVALID_ADDRESS at 0x0000000000000001 

ошибка показана система для резьбы 0:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 
0 libstdc++.6.dylib    0x00007fff932ee71a std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::assign(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&) + 26 
1 libwx_osx_cocoau_core-3.1.dylib 0x0000000109eee003 wxNonOwnedWindow::Create(wxWindow*, int, wxPoint const&, wxSize const&, long, wxString const&) + 67 
2 libwx_osx_cocoau_core-3.1.dylib 0x0000000109ef2321 wxTopLevelWindowMac::Create(wxWindow*, int, wxString const&, wxPoint const&, wxSize const&, long, wxString const&) + 49 
3 WxTestApp      0x0000000109eb7aec wxFrame::wxFrame(wxWindow*, int, wxString const&, wxPoint const&, wxSize const&, long, wxString const&) + 140 (frame.h:35) 
4 WxTestApp      0x0000000109eb7501 MyFrame::MyFrame(wxString const&) + 129 (main.cpp:145) 
5 WxTestApp      0x0000000109eb744d MyFrame::MyFrame(wxString const&) + 29 (main.cpp:180) 
6 WxTestApp      0x0000000109eb7366 MyApp::OnInit() + 102 (main.cpp:127) 
7 libwx_osx_cocoau_core-3.1.dylib 0x0000000109ee962e wxApp::CallOnInit() + 158 
8 libwx_baseu-3.1.dylib   0x000000010a5d1bf9 wxEntry(int&, wchar_t**) + 121 
9 WxTestApp      0x0000000109eb7216 main + 38 (main.cpp:108) 
10 libdyld.dylib     0x00007fff998c25ad start + 1 

Линия 108 из main.cpp является:

wxIMPLEMENT_APP(MyApp); 

Это известная проблема, или есть что-то, что нужно быть настроенным из минимального образца, представленного в документации? Мне интересно, может ли это иметь отношение к функции безопасности System Integrity Protection.

+0

Я думаю, что wxWidgets просто перестает работать на Mac, так как 3.02 вообще не удается построить на 10.11. – Dan

+0

Не уверен, что это полностью связано с вашим вопросом, но когда я обновил свой gcc с 4.8 до 5.1, у меня возникли проблемы с wxWidgets в Windows 10. Программа была правильно построена, но при запуске она рушилась особенно с помощью виджета выбора цвета. Я понизился до 4.8, и все сработало так, как должно. – macroland

+0

@ Дэн, вы говорите о минимальном образце, расположенном в wxWidgets/samples/minimum? Тот, который поставляется с дистрибутивом wxWidgets? Кроме того, мне интересно, что вы настраивали для построения библиотеки? – Igor

ответ

1

wxWidgets 3.1.0 определенно работает на macOS 10.11, это похоже на проблему с сборкой, потому что для кода не существует никакой причины для сбоя в std::string::assign().

Вы упомянули, что вы создали минимальный образец, используя CMake. Я не знаю, как именно вы это сделали, так как мы не предоставляем CMakefiles для образцов (пока, во всяком случае), но создание его с помощью простого make -C samples/minimal в каталоге сборки должно обязательно работать.

Кстати, это похоже на то, что вы построили прямо в исходном каталоге. Это должно по-прежнему работать, но легко сделать ошибку (и нелегко ее найти), если вы сделаете это так, так что я сильно рекомендую построить отдельный каталог сборки, например. mkdir -p ~/build/wx-3.1.0 && cd $_ && ~/src/wx/3.1.0/configure && make (предполагается, что у вас есть источники в этом каталоге, конечно).

+0

Я должен уточнить, я не создал wxWidgets с CMake, я просто использовал ./configure, make, sudo make install. Я построил минимальный образец, используя CMake с модулем 'find_package', чтобы найти wx – Dan

+0

@Dan, вам не нужно устанавливать библиотеки - просто используйте их из каталога сборки. Кроме того, вы пытались просто выполнить «cd wxWidgets-3.1/buildMac/samples/minimum && make && open minimum.app». Как сказал Вадим, настоятельно рекомендуется создавать библиотеки в отдельном каталоге. – Igor

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