c++ - 无法使教程中的 wxWidgets 示例正常工作

标签 c++ windows-7 wxwidgets codeblocks

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

#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|错误:在字符串常量之前需要不合格的 id| N:\projekticpp\wxTestTutorial2\main.cpp|28|错误:此处不允许在“{”标记之前定义函数| N:\projekticpp\wxTestTutorial2\main.cpp|28|错误:这里不允许在'{'标记之前定义函数|

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

最佳答案

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

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

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

关于c++ - 无法使教程中的 wxWidgets 示例正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21641281/

相关文章:

c++ - 从 wxString 转换为 double 时,小数位被解释为零

c++ - 从函数返回对局部变量的 const 引用

c++ - 在 C++ 中使用 setInterval()

c++ - 参数类型自动推导和匿名 lambda 函数

windows - 从命令行获取默认打印机名称?

ubuntu - 使用 GTK+ 3 在 Ubuntu 14.04 上构建 wxWidgets 时出错

c++ - 交叉编译教程

c++ - 在 Unix/Linux 中将 Windows 文件时间转换为秒

c# - 如何重新排列出现在任务栏中的应用程序的缩略图?

Eclipse 未在 Windows 7 上启动