我正在尝试学习wxWidgets框架,因为我已被分配去处理已经使用该库的项目。

我在Raspberry Pi上使用它,并使用sudo apt-get install libwxgtk2.8-dev libwxgtk2.8-dbg安装了它。

我在wxWidgets网站上找到this教程,并将其粘贴到我的Pi上名为hello.cpp的文件中。

然后我运行了g++ hello.cpp -o hello wx-config --cxxflags --libs`,并收到以下巨大错误消息:

gcc hello.cpp -o hello`wx-config --cxxflags --libs`
hello.cpp:20:27:错误:ISO C++禁止声明无类型的[wxDECLARE_EVENT_TABLE] [-fpermissive]
hello.cpp:27:5:错误:“wxEventTableEntry”之前的预期构造函数,析构函数或类型转换
hello.cpp:在成员函数“虚拟 bool(boolean) MyApp::OnInit()”中:
hello.cpp:34:84:错误:从“const char [12]”到“const wxString”的转换是模棱两可的
hello.cpp:34:84:注意:候选人为:
/usr/include/wx-2.8/wx/string.h:692:3:注意:wxString::wxString(wxChar,size_t)
/usr/include/wx-2.8/wx/string.h:692:3:注意:参数1的已知转换没有从“const char [12]”转换为“wxChar {aka wchar_t}”
/usr/include/wx-2.8/wx/string.h:682:3:注意:wxString::wxString(int)
/usr/include/wx-2.8/wx/string.h:682:3:注意:未知参数1从'const char [12]'到'int'的转换
hello.cpp:15:5:错误:初始化“MyFrame::MyFrame(const wxString&,const wxPoint&,const wxSize&)”的参数1
hello.cpp:在构造函数“MyFrame::MyFrame(const wxString&,const wxPoint&,const wxSize&)”中:
hello.cpp:43:74:错误:从“const char [17]”到“const wxString”的转换是模棱两可的
hello.cpp:43:74:注意:候选人为:
/usr/include/wx-2.8/wx/string.h:692:3:注意:wxString::wxString(wxChar,size_t)
/usr/include/wx-2.8/wx/string.h:692:3:注意:参数1从'const char [17]'到'wxChar {aka wchar_t}'的未知转换
/usr/include/wx-2.8/wx/string.h:682:3:注意:wxString::wxString(int)
/usr/include/wx-2.8/wx/string.h:682:3:注意:参数1从'const char [17]'到'int'的转换未知
/usr/include/wx-2.8/wx/menu.h:62:17:错误:初始化“wxMenuItem * wxMenuBase::Append(int,const wxString&,const wxString&,wxItemKind)”的参数2
hello.cpp:49:40:错误:从“const char [6]”到“const wxString”的转换不明确
hello.cpp:49:40:注意:候选人为:
/usr/include/wx-2.8/wx/string.h:692:3:注意:wxString::wxString(wxChar,size_t)
/usr/include/wx-2.8/wx/string.h:692:3:注意:参数1从'const char [17]'到'wxChar {aka wchar_t}'的未知转换
/usr/include/wx-2.8/wx/string.h:682:3:注意:wxString::wxString(int)
/usr/include/wx-2.8/wx/string.h:682:3:注意:参数1从'const char [17]'到'int'的转换未知
/usr/include/wx-2.8/wx/menu.h:62:17:错误:初始化“wxMenuItem * wxMenuBase::Append(int,const wxString&,const wxString&,wxItemKind)”的参数2
hello.cpp:49:40:错误:从“const char [6]”到“const wxString”的转换不明确
hello.cpp:49:40:注意:候选人为:
/usr/include/wx-2.8/wx/string.h:692:3:注意:wxString::wxString(wxChar,size_t)
hello.cpp:20:27:错误:ISO C++禁止声明无类型的[wxDECLARE_EVENT_TABLE] [-fpermissive]
hello.cpp:27:5:错误:“wxEventTableEntry”之前的预期构造函数,析构函数或类型转换
hello.cpp:在成员函数“虚拟 bool(boolean) MyApp::OnInit()”中:
hello.cpp:34:84:错误:从“const char [12]”到“const wxString”的转换是模棱两可的
hello.cpp:34:84:注意:候选人为:
/usr/include/wx-2.8/wx/string.h:692:3:注意:wxString::wxString(wxChar,size_t)
/usr/include/wx-2.8/wx/string.h:692:3:注意:参数1的已知转换没有从“const char [12]”转换为“wxChar {aka wchar_t}”
/usr/include/wx-2.8/wx/string.h:682:3:注意:wxString::wxString(int)
/usr/include/wx-2.8/wx/string.h:682:3:注意:未知参数1从'const char [12]'到'int'的转换
hello.cpp:15:5:错误:初始化“MyFrame::MyFrame(const wxString&,const wxPoint&,const wxSize&)”的参数1
hello.cpp:在构造函数“MyFrame::MyFrame(const wxString&,const wxPoint&,const wxSize&)”中:
hello.cpp:43:74:错误:从“const char [17]”到“const wxString”的转换是模棱两可的
hello.cpp:43:74:注意:候选人为:
/usr/include/wx-2.8/wx/string.h:692:3:注意:wxString::wxString(wxChar,size_t)
/usr/include/wx-2.8/wx/string.h:692:3:注意:参数1从'const char [17]'到'wxChar {aka wchar_t}'的未知转换
/usr/include/wx-2.8/wx/string.h:682:3:注意:wxString::wxString(int)
/usr/include/wx-2.8/wx/string.h:682:3:注意:参数1从'const char [17]'到'int'的转换未知
/usr/include/wx-2.8/wx/menu.h:62:17:错误:初始化“wxMenuItem * wxMenuBase::Append(int,const wxString&,const wxString&,wxItemKind)”的参数2
hello.cpp:49:40:错误:从“const char [6]”到“const wxString”的转换是模棱两可的
hello.cpp:49:40:注意:候选人为:
/usr/include/wx-2.8/wx/string.h:692:3:注意:wxString::wxString(wxChar,size_t)
/usr/include/wx-2.8/wx/string.h:692:3:注意:参数1从'const char [6]'到'wxChar {aka wchar_t}'的未知转换
/usr/include/wx-2.8/wx/string.h:682:3:注意:wxString::wxString(int)
/usr/include/wx-2.8/wx/string.h:682:3:注意:参数1从'const char [6]'到'int'的转换未知
/usr/include/wx-2.8/wx/gtk/menu.h:27:18:错误:初始化“虚拟bool wxMenuBar::Append(wxMenu *,const wxString&)”的参数2
hello.cpp:50:40:错误:从“const char [6]”到“const wxString”的转换是模棱两可的
hello.cpp:50:40:注意:候选人为:
/usr/include/wx-2.8/wx/string.h:692:3:注意:wxString::wxString(wxChar,size_t)
/usr/include/wx-2.8/wx/string.h:692:3:注意:参数1的已知转换没有从“const char [6]”转换为“wxChar {aka wchar_t}”
/usr/include/wx-2.8/wx/string.h:682:3:注意:wxString::wxString(int)
/usr/include/wx-2.8/wx/string.h:682:3:注意:参数1从'const char [6]'到'int'的转换未知
/usr/include/wx-2.8/wx/gtk/menu.h:27:18:错误:初始化“虚拟bool wxMenuBar::Append(wxMenu *,const wxString&)”的参数2
hello.cpp:53:44:错误:从“const char [22]”到“const wxString”的转换是模棱两可的
hello.cpp:53:44:注意:候选人为:
/usr/include/wx-2.8/wx/string.h:692:3:注意:wxString::wxString(wxChar,size_t)
/usr/include/wx-2.8/wx/string.h:692:3:注意:参数1从'const char [22]'到'wxChar {aka wchar_t}'的未知转换
/usr/include/wx-2.8/wx/string.h:682:3:注意:wxString::wxString(int)
/usr/include/wx-2.8/wx/string.h:682:3:注意:未知参数1从'const char [22]'到'int'的转换
/usr/include/wx-2.8/wx/frame.h:110:18:错误:初始化“虚拟无效wxFrameBase::SetStatusText(const wxString&,int)”的参数1
hello.cpp:在成员函数“void MyFrame::OnAbout(wxCommandEvent&)”中:
hello.cpp:62:66:错误:从“const char [40]”到“const wxString”的转换是模棱两可的
hello.cpp:62:66:注意:候选人为:
/usr/include/wx-2.8/wx/string.h:692:3:注意:wxString::wxString(wxChar,size_t)
/usr/include/wx-2.8/wx/string.h:692:3:注意:参数1从'const char [40]'到'wxChar {aka wchar_t}'的未知转换
/usr/include/wx-2.8/wx/string.h:682:3:注意:wxString::wxString(int)
/usr/include/wx-2.8/wx/string.h:682:3:注意:参数1从'const char [40]'到'int'的转换未知
/usr/include/wx-2.8/wx/msgdlg.h:70:17:错误:初始化“int wxMessageBox(const wxString&,const wxString&,long int,wxWindow *,int,int)”的参数1
hello.cpp:在成员函数“void MyFrame::OnHello(wxCommandEvent&)”中:
hello.cpp:66:47:错误:无法将参数'1'的'const char *'转换为'const wxChar * {aka const wchar_t *}'到'void wxLogMessage(const wxChar *,...)'

似乎是从char*类型转换为wxString类型的问题。有什么办法可以解决这个问题?官方示例会出现所有这些错误,这似乎很奇怪,我是否可以正确编译?

最佳答案

您已链接到wxwidgets主干版本的文档。在wxstring中,从2.8到3.0之后发生了一些变化。

参见http://docs.wxwidgets.org/trunk/overview_changes_since28.html

因此,我建议您将此页面用于“Hello World”程序。
http://docs.wxwidgets.org/2.8.12/wx_helloworld.html#helloworld

我也建议您使用“g++”而不是“gcc”。 g++自动链接到libstdc++。
What is the difference between g++ and gcc?

关于c++ - wxWidgets Hello World示例未编译,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30841549/

10-13 00:06