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