Sadece OS X'de (10.11.3 (15D21)) wxWidgets kullanarak bir irc istemci projesi başlattım. Bununla birlikte, kodu derlediğimde ve çalıştırdığımda, herhangi bir nedenle hataları parçalara ayırıyor. Programı gdb ile çalıştırdım ve çıktıyı aldım.wxWidgets programı seg faulting
Program received signal SIGSEGV, Segmentation fault.
0x00007fff9793871a in 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&)() from /usr/lib/libstdc++.6.dylib
Kodum yüzden ben bu sorunu yaşıyorum neden emin değilim uzakta merhaba dünya öğreticisindeki WxWidgets web sitesinde dolaştı olmamıştır. Gdb çıktısına dayanarak, sorun, std::string::assign()
ile ilgili gibi görünüyor. Bu çizgiyi aşağıya çektiğini görebileceğim tek yer, başlığın geçtiği wxFrame inşası mı?
main.hpp
#ifndef __main_hpp
#define __main_hpp
#include <sockit.hpp>
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
#include "frame.hpp"
class IrcClientApp : public wxApp {
public:
virtual bool OnInit();
};
#endif
main.cpp
#include "main.hpp"
wxIMPLEMENT_APP(IrcClientApp);
bool IrcClientApp::OnInit() {
IrcClientFrame* frame = new IrcClientFrame("IRC client", wxPoint(100, 100), wxSize(600, 400));
frame->Show(true);
return true;
}
frame.hpp
#ifndef __frame_hpp
#define __frame_hpp
class IrcClientFrame : public wxFrame {
private:
void about(wxCommandEvent&);
void exit(wxCommandEvent&);
wxDECLARE_EVENT_TABLE();
public:
IrcClientFrame(const wxString&, const wxPoint&, const wxSize&);
};
#endif
frame.cpp
#include "main.hpp"
wxBEGIN_EVENT_TABLE(IrcClientFrame, wxFrame)
EVT_MENU(wxID_ABOUT, IrcClientFrame::about)
wxEND_EVENT_TABLE()
IrcClientFrame::IrcClientFrame(const wxString& title, const wxPoint& pos, const wxSize& size) :
wxFrame(NULL, wxID_ANY, title, pos, size) {
// About menu item
wxMenu* menu_about = new wxMenu;
menu_about->Append(wxID_ABOUT);
// Menu bar
wxMenuBar* menu_bar = new wxMenuBar;
menu_bar->Append(menu_about, "&Help");
// Set it
SetMenuBar(menu_bar);
CreateStatusBar();
SetStatusText("This is the status text!");
}
void IrcClientFrame::about(wxCommandEvent& e) {
wxMessageBox("Hello world", "Hello world", wxOK | wxICON_INFORMATION);
}
void IrcClientFrame::exit(wxCommandEvent& e) {
Close(true);
}
Sen -std=c++11
ile kütüphane inşa etmedi ama kendi kodu için bunu kullanıyor
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000001
Exception Note: EXC_CORPSE_NOTIFY
VM Regions Near 0x1:
-->
__TEXT 0000000103d8d000-0000000103d93000 [ 24K] r-x/rwx SM=COW /Users/USER/*
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libstdc++.6.dylib 0x00007fff9793871a 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 0x00000001041bcfbf wxNonOwnedWindow::Create(wxWindow*, int, wxPoint const&, wxSize const&, long, wxString const&) + 63
2 libwx_osx_cocoau_core-3.1.dylib 0x00000001041c1311 wxTopLevelWindowMac::Create(wxWindow*, int, wxString const&, wxPoint const&, wxSize const&, long, wxString const&) + 49
3 client 0x0000000103d912ec wxFrame::wxFrame(wxWindow*, int, wxString const&, wxPoint const&, wxSize const&, long, wxString const&) + 140 (frame.h:35)
4 client 0x0000000103d90d2f IrcClientFrame::IrcClientFrame(wxString const&, wxPoint const&, wxSize const&) + 175 (frame.cpp:8)
5 client 0x0000000103d9111d IrcClientFrame::IrcClientFrame(wxString const&, wxPoint const&, wxSize const&) + 45 (frame.cpp:23)
6 client 0x0000000103d8e9b6 IrcClientApp::OnInit() + 134 (main.cpp:6)
7 libwx_osx_cocoau_core-3.1.dylib 0x00000001041b755e wxApp::CallOnInit() + 158
8 libwx_baseu-3.1.dylib 0x00000001048623f9 wxEntry(int&, wchar_t**) + 121
9 client 0x0000000103d8e8a6 main + 38 (main.cpp:3)
10 libdyld.dylib 0x00007fff9740a5ad start + 1
Nasıl derlediniz? –
Merhaba @MarkSetchell, düzenleme başlığına bakın, – th3v0id
'u derlemek için Makefile im'i ekledim "homebrew" ile wxWidgets'ı yüklediniz mi? –