【问题标题】:wxWidgets Hello World example not compilingwxWidgets Hello World 示例未编译
【发布时间】:2015-08-30 17:38:28
【问题描述】:

我正在尝试学习 wxWidgets 框架,因为我被分配从事一个已经使用该库的项目。

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

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

然后我运行 g++ hello.cpp -o hellowx-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:在成员函数“virtual bool 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:错误:初始化参数 2'wxMenuItem* wxMenuBase::Append(int, const wxString&, const wxString&, wxItemKind)' 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:错误:初始化参数 2'wxMenuItem* wxMenuBase::Append(int, const wxString&, const wxString&, wxItemKind)' 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:在成员函数“virtual bool 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:错误:初始化参数 2'wxMenuItem* wxMenuBase::Append(int, const wxString&, const wxString&, wxItemKind)' 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: 错误:正在初始化‘virtual 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: 错误:正在初始化‘virtual 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:错误:正在初始化“virtual void 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:错误:初始化参数 1'int wxMessageBox(const wxString&, const wxString&, long int, wxWindow*, int, int)' 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 类型的问题。有没有办法解决这个问题?一个官方示例会出现所有这些错误似乎很奇怪,我是否正确编译它?

【问题讨论】:

    标签: c++ wxwidgets


    【解决方案1】:

    您链接到 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?

    【讨论】:

    • 这是正确的,错误是由于使用为 3.0 和 2.8 编写的示例。解决这个问题的另一种方法是首先使用 wx 3.0,这是强烈推荐的,2.8 已经很久没有维护/支持了。
    猜你喜欢
    • 2011-07-12
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 2018-08-18
    • 1970-01-01
    • 2012-07-03
    相关资源
    最近更新 更多