无法从教程中获取wxWidgets示例

时间:2014-02-08 02:48:15

标签: c++ windows-7 wxwidgets codeblocks

我刚开始学习wxWidgets并且没有经验。我被建议检查this tutorial 所以我在Code Blocks 13.12(Win 7)中创建了一个“控制台应用程序”,选择了wxWidgets 3.0,并尝试将教程中的代码插入到我的代码中。代码块在项目创建时为我提供的基本代码是:

#include <iostream>

using namespace std;

int main()
 {
     // "hello world" with cout
     return 0;
 }

尽管尝试以各种方式插入教程代码,程序从未编译过,但我总是遇到很多错误。除了我缺乏使用wxWidgets的技能外,我怀疑其中一个原因可能是我安装了wxWidgets 3.0,而教程可能正在使用旧版本。有人可以告诉我如何在CodeBlocks项目中编写此代码,使其成功构建并运行吗?谢谢。

编辑:

我尝试编译的代码是:

#include <iostream>

using namespace std;

#include <wx/wx.h>


int main()
{

    class OurApp : public wxApp
{
    bool OnInit()
    {
        wxFrame* frame = new wxFrame(NULL, wxID_ANY, "Our First App");
        frame->Show();
        return true;
    }

};

IMPLEMENT_APP(OurApp)

return 0;
}

此特定版本返回错误:

N:\ projekticpp \ wxTestTutorial2 \ main.cpp | 28 |错误:字符串常量之前的预期unqualified-id | N:\ projekticpp \ wxTestTutorial2 \ main.cpp | 28 |错误:在'{'token |之前不允许使用函数定义 N:\ projekticpp \ wxTestTutorial2 \ main.cpp | 28 |错误:在'{'token |

之前不允许使用函数定义

但是尝试将代码放在一起的其他不同方法,我得到了各种不同的方法。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

IMPLEMENT_APP()或更好的wxIMPLEMENT_APP()是一个必须出现在全局范围内的宏,您不能将其放在main()函数中。

事实上,如果你使用它,你根本不需要main(),因为它是由这个宏扩展生成的。

最后,虽然你还没有遇到这个问题,但是一旦代码编译它可能就不会链接,因为你选择了错误的应用程序类型:它应该是一个“GUI”(或者可能是“Windows”)而不是“控制台”应用程序。