第三章IDE开发环境配置
前面把wxWidgets开发的框架准备工作做好了,本章我们来做wxWidgets开发的最后一项的准备工作。
本章也是分两个方面进行介绍,一个是基于VS上开发的配置,一个是基于CodeBlocks上的开发配置,本人在这里推荐使用后者,原因在前面一章已经说过。
3.1 基于VS上的wxWidgets开发
由于VS上没有专门对wxWidgets的支持(这方面插件倒是有的如:wxVS2008Integration但需要付费),我们只有在建立好的C++工程上去配置工程环境,那下面我们就以在VS上建立一个简单的wxWidgets项目为例展开介绍。
首先,我们建立一个空的VC++项目,在空的项目中新建一个空CPP文件。
空项目图(等待截图)
然后,我们右击项目,打开项目“属性”对话框:
项目“属性”对话框图(等待截图)
在属性对话框里,首先要修改的是“C/C++”->“常规”里的“附加库include路径”,我们需要把wxWidgets库的include目录和编译好的vc_lib库头文件路径填在里面:
D:\wxWidgets-2.9.4\include
D:\wxWidgets-2.9.4\lib\vc_lib\mswud
“C/C++”->“常规”里的“附加库include路径”对话框图(等待截图)
然后要在“C/C++”->“预处理”里的“预处理字符串”里加上
WIN32
_DEBUG
__WXMSW__
_WINDOWS
NOPCH
“C/C++”->“预处理”里的“预处理字符串”对话框图(等待截图)
然后是“连接”->“常规”里的“附加库路径”,我们把wxWidgets的库路径“D:\wxWidgets-2.9.4\lib\vc_lib”添加到里面:
“连接”->“常规”里的“附加库路径”修改图(等待截图)
然后在“连接”->“导入”中的“附加依赖文件”里,加入我们用到的wxWidgets库。在这里我们需要按照wxWidgets例子工程minimal的配置,加入wxmsw29ud_core.lib,wxbase29ud.lib,wxtiffd.lib,wxjpegd.lib,wxpngd.lib,wxzlibd.lib,wxregexud.lib,wxexpatd.lib,winmm.lib,comctl32.lib,rpcrt4.lib,wsock32.lib,wininet.lib这些库。在实际项目开发过程中,我们还可以根据需要随时进行导入的库的添加和修改。
“连接”->“导入”中的“附加依赖文件”修改图(等待截图)
在做完这样的设置之后,我们开始来进行测试。我们在这个工程的空CPP里加入以下代码:
#include"wx/wx.h"
voidmain()
{
wxPrintf("Hello world!");
inta;
wxScanf("%d",&a);
}
按F5运行,我们如果看到黑色命令提示环境窗口有Hello world!打印出来,说明已经配置成功了,现在我们来进行下一步:wxWidgets界面开发工具wxFormBuilder的使用。
我们首先安装好wxFormBuilder,软件是免费开源的,下载地址在第一章可以找到。
安装完成后,我们打开wxFormBuilder,可以在左侧工程子窗口里看到已经有一个默认的MyProject1了,我们在里面添加一个Dialog和一个wxStaticText,如图所示:
完成布局设计后,通过下方选项卡将窗口切换到C++代码模式,C++代码包括一个.h头文件一个.cpp源文件,把这些代码都拷贝到刚刚建立的VS工程里,这里要注意VS工程里的.h和.cpp文件名。
这样之后,我们还不能正常运行程序,因为我们通过wxFormBuilder建立的都只是单个窗体,是没有程序入口点的。我们要让程序运行起来,需要实现wxApp里面的方法,我们在刚刚拷贝生成的.h头文件的include块下加入以下代码:
#include<wx/wx.h>
classMyApp: public wxApp
{
public:
virtual bool OnInit();
};
然后在.cpp源文件的include块下里加入
IMPLEMENT_APP(MyApp)
boolMyApp::OnInit()
{
if(!wxApp::OnInit())
return false;
MyDialog1 *dlg=new MyDialog1(NULL);
dlg->Show();
return true;
}
完成之后我们按F5运行程序,就能得到能过wxFormBuilder设计好的实际运行结果了:
。
除特别声明为转载内容外,本站所有内容均为作者原创,谢绝任何单位和个人不经许可的复制和转播!
对于确有转载需要的,请先与作者联系,在获得允许后烦请在转载时保留文章出处。
本文出自Lupin's Blog:http://www.cnzui.com/archives/957
from: 《跟我学wxWidgets开发》系列教程开始了 - Lupin's Blog-原中华最网
谢谢..!!好棒的教程
我用的是3.0版本,按照楼主的配置,编译Hello World 时总是出现:错误 1 error LNK2001: 无法解析的外部符号 “void (__cdecl* wxTheAssertHandler)(class wxString const &,int,class wxString const &,class wxString const &,class wxString const &)” (?wxTheAssertHandler@@3P6AXABVwxString@@H000@ZA) 错误 2 error LNK2001: 无法解析的外部符号 “bool wxTrapInAssert” (?wxTrapInAssert@@3_NA)望楼主解答
我发现这两个符号在appBase.cpp 里面定义了,我已经在链接 输入里面加入了wxbase30ud.lib了,错误依旧出现
没用过3.0,不过看样子是你有些模块没有编译进去,可以考虑整体编译的方式编译。(打开 MONOLITHIC 开关)
我用的是3.0版本,按照楼主的配置,编译Hello World 时总是出现:错误1error LNK2001: 无法解析的外部符号 “void (__cdecl* wxTheAssertHandler)(class wxString const &,int,class wxString const &,class wxString const &,class wxString const &)” (?wxTheAssertHandler@@3P6AXABVwxString@@H000@ZA)错误2error LNK2001: 无法解析的外部符号 “bool wxTrapInAssert” (?wxTrapInAssert@@3_NA)望楼主解答