我刚开始学习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 |
之前不允许使用函数定义但是尝试将代码放在一起的其他不同方法,我得到了各种不同的方法。
答案 0 :(得分:1)
你是否包括图书馆(所有.a)?看看这个教程:
答案 1 :(得分:1)
IMPLEMENT_APP()
或更好的wxIMPLEMENT_APP()是一个必须出现在全局范围内的宏,您不能将其放在main()
函数中。
事实上,如果你使用它,你根本不需要main()
,因为它是由这个宏扩展生成的。
最后,虽然你还没有遇到这个问题,但是一旦代码编译它可能就不会链接,因为你选择了错误的应用程序类型:它应该是一个“GUI”(或者可能是“Windows”)而不是“控制台”应用程序。