2016-12-05 152 views
1

在Mac OS X El Capitan(10.11)上是否存在使用wxWidgets 3.1.0的任何已知问题?我能够毫无问题地编译它,并且我的导入正在为我的示例应用程序解析(无构建错误),但启动后我会得到即时分段错误。我正在尝试运行文档中提供的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所示的错误:main.cpp中的

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:

wxIMPLEMENT_APP(MyApp); 

这是一个已知的问题或有什么需要从文档中提供的最小样本中调整?我想知道它是否可能与System Integrity Protection安全功能有关。

+0

我在想wxWidgets根本不能在Mac上工作,因为3.02完全不能在10.11上构建。 – Dan

+0

不知道这是否与您的问题完全相关,但是当我将gcc从4.8升级到5.1时,我遇到了Windows 10上的wxWidgets问题。该程序构建正确,但运行时崩溃了,尤其是颜色选择小部件。我已降级到4.8,一切正常。 – macroland

+0

@丹,你是在说最小的样本位于wxWidgets/samples/minimal? 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

我应该澄清,我没有用CMake构建wxWidgets,我只是使用./configure,make,sudo make install。我使用CMake和'find_package'模块构建了最小样本,以查找wx – Dan

+0

@Dan,您不必安装这些库 - 只需在build目录中使用它们即可。另外,你是否试图做“cd wxWidgets-3.1/buildMac/samples/minimal && make && open minimal.app”。正如Vadim所说,强烈建议在独立的目录中构建这些库。 – Igor

相关问题