c++ - wxWidgets 3.1.0 和 Mac OS X El Capitan (10.11)

标签 c++ macos wxwidgets

在 Mac OS X El Capitan (10.11) 上使用 wxWidgets 3.1.0 是否有任何已知问题?我能够毫无问题地编译它,并且我的导入正在为我的示例应用程序解决(没有构建错误),但是在启动时我立即遇到段错误。我正在尝试运行 minimal sample在文档中提供。它构建时没有任何错误,但在运行时立即崩溃。

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

main.cpp 的第 108 行是:

wxIMPLEMENT_APP(MyApp);

这是一个已知问题还是需要根据文档中提供的最小样本进行调整?我想知道它是否与 System Integrity Protection 有关安全功能。

最佳答案

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(当然,假设你的源代码在这个目录中) .

关于c++ - wxWidgets 3.1.0 和 Mac OS X El Capitan (10.11),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40967978/

相关文章:

macos - 并行操作在 Scala 中挂起

python - 调整 wxPython 面板的大小而不触发 EVT_SIZE

c++ - 使用 wxWidgets 检查外部应用程序是否正在运行

c++ - Boost.Asio在该帖子之后被调用处理程序吗?

c++ - 在 vector 中存储模板化对象(Storing Class<int>, Class<double> in a single vector)

Python IndexError 只发生在 osx 而不是 linux

xcode - 网络链路调节器卡住并且无法启动

c++ - 在 wxWidgets (Windows) 的 ToolBar 中添加 ComboBox

c++ - 无法使用 GLFW3 初始化 GLew

c++ - std 原子同步和非原子变量 : not a stale data?