wxWidgets 3.1.0 and Mac OS X El Capitan (10.11)



在Mac OS X El Capitan(10.11)上使用WXWIDGETS 3.1.0是否有任何已知问题?我能够在没有问题的情况下对其进行编译,并且我的示例应用程序正在解决(无构建错误),但是在启动时,我会得到即时的细分故障。我正在尝试运行文档中提供的最小样本。它构建没有任何错误,但是当运行时,它立即崩溃。

Crashed Thread:        0  Dispatch queue: com.apple.main-thread
Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000001

系统为线程0显示的错误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

main.cpp的第108行是:

wxIMPLEMENT_APP(MyApp);

这是已知问题,还是需要根据文档中提供的最小样本进行调整的问题?我想知道这是否可能与系统完整性保护安全功能有关。

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(当然,假设您在此目录中有源头)。

最新更新