2016-12-05 4 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 시스템에 의해 표시되는 오류 :

wxIMPLEMENT_APP(MyApp); 

이 알려진 문제인가, 아니면 필요 무언가가있다 : 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)입니다 설명서에 제공된 최소 샘플에서 조정할 수 있습니까? 나는 System Integrity Protection 보안 기능과 관련이 있는지 궁금합니다.

+0

wxWidgets가 Mac에서 더 이상 작동하지 않는다고 생각합니다. 3.02가 10.11에서 완전히 빌드되지 못했습니다. – Dan

+0

질문과 완전히 관련이 있는지 확신 할 수 없지만 gcc를 4.8에서 5.1로 업그레이드했을 때 Windows 10에서 wxWidgets에 문제가있었습니다. 프로그램이 올바르게 구축되었지만 실행할 때 색상 선택 위젯과 충돌이 발생했습니다. 나는 4.8로 격하되었고 모든 것이 잘 돌아갔다. – macroland

+0

@ Dan, 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을 사용했다. 'find_package' 모듈로 CMake를 사용하여 최소 샘플을 만들었습니다. wx – Dan

+0

@ Dan을 찾으려면 라이브러리를 설치할 필요가 없습니다. 빌드 디렉토리에서 사용하십시오. 또한, "cd wxWidgets-3.1/buildMac/samples/minimal && make && minimal.app"을 실행 해 보았습니다. Vadim이 말했듯이, 라이브러리를 별도의 디렉토리에 구축하는 것이 강력하게 권장됩니다. – Igor