`
seawavecau
  • 浏览: 759094 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Eclipse+WxWidgets开发环境搭建

阅读更多

转自:转瞬即逝
http://zhuliangxiong.spaces.live.com/blog/cns!FF1E50EF46E5979D!677.entry

Eclipse+WxWidgets开发环境搭配

一直在寻找一个方便使用的C++GUI库。今天终于把WxWidgets搞定。

大致的步骤是四步:
第一步,Eclipse及CDT的安装
第二步,MinGW及编译器的安装配置
第三步,wxWidget的下载及编译
第四步,Eclipse下有关wxWidget的配置

 

搞定wxWidget的配置、开始编写像样的windows程序

----Richard Lee 回味


看了网上的绝大部分文章,多半解决不了什么问题,还有可能误入歧途,浪费更多的时间在前期这准备工作上。
所以,把这些配置的详细步骤写出来,希望能为后来者指点迷津,切莫再花时间再环境的搭建上了。
大致的步骤是四步:

第一步,Eclipse及CDT的安装
第二步,MinGW及编译器的安装配置
第三步,wxWidget的下载及编译
第四步,Eclipse下有关wxWidget的配置

经过这四步相信你就应该可以正常调试你的窗口程序了。
ok,我们开始。

第一步 Eclipse及CDT的安装
这步其实没啥说的,是最简单的一步,用过eclipse及安装过插件的人都应该很快搞定。
下载Eclipse最新版本,到我写这篇文章时应该是3.2版,由 http://www.eclipse.org 下载,当然首先你要先下载JDK并正确安装和注册环境变量path(将你的jre的bin目录路径cut到path里),再启动Eclipse 应该看到正常启动画面。
再到eclipse的网站上找到CDT,下载它,当然你应该选择最近的版本下载。
下载后,进行解压,并直接将解压后得到的诸多文件及文件夹 Copy到Eclipse原目录下。重新启动Eclipse,这时再新建工程,你应该能见到 C/C++工程这项了。
到这里,你的CDT算是安装成功了。

第二步 MinGW及编译器的安装配置
这部分主要是MinGW的下载及安装配置。
由于单独的Eclipse + CDT 是不能完成C++工程开发的,因为至少还缺少编译器及基础类库,这里我们选择MinGW工具,你需要到 http://www.MinGW.org 上去下载最新版本的MinGW。
到目前为止,最新版本是5.0.2版,你从它网站上直接download下来的应该是一个100多k的下载端软件,还需要继续下载全部内容,运行该下载文件后,按要求逐步推进,如果你是下载压缩包,即只下载需要的部分,那么你选择下载以下这几部分
  • gcc-g++-3.4.2-20040916-1.tar.gz
  • gcc-core-3.4.2-20040916-1.tar.gz
  • mingw32-make-3.80.0-3.tar.gz
  • mingw-runtime-3.9.tar.gz
  • mingw32-make-3.80.0-3.tar.gz
  • binutils-2.15.91-20040904-1.tar.gz
  • w32api-3.6.tar.gz
下 载完成后,首先将他们拷贝到同一目录下,并将它们解压在同一目录下面(例如我的mingw安装目录是c:\mingw,那么需要将这7个压缩文件全部直接 在c:\mingw解压)。然后设置环境变量确保在PATH环境变量中包含"d:\mingw\bin",最后可以打开DOS控制台输入gcc来验证环境 变量是否设置正确。如果你的DOS控制台显示“no input file”等相关信息,那么你这一步也算完成了。
第三步,wxWidget的下载及编译
wxWidget由 http://www.wxWidgets.org 下载并安装,目录自选。
安装好后,直接进入你wxWidgets的安装目录 (举例:c:\wxWidgets-2.8.0\build\msw)中,在这里执行命令
mingw32-make -f makefile.gcc BUILD=release SHARED=0 UNICODE=1 USE_ODBC=1

通过makefile.gcc 这个文件将整个项目编译好,你会等很久大约半个多小时,编译后目录涨到800多M,因为一部分是.o的中间文件,
可以删除。

编译后你会在安装目录的(c:\wxWidgets-2.8.0\lib\gcc_lib)下看到一堆扩展名为 .a 的Archive文件(windows下的库文件为.lib
linux下为 .a)和几个目录,类似mswu,mswud。
第三步完成。

第四步,Eclipse下有关wxWidgets的配置

首先启动你的Eclipse并建立一个Managed C++ Project。创建完成后右键该项目并选择"Properties"属性对话框在其中选择“C/C++ Build"选项。
在C/C++Build选项界面中,选择“Configuration Settings”的"Tool Settings“。
在Tool Settings中选择"GCC C++ Compiler"->"Preprocessor",
在Defined symbols列表中加入:__WXMSW__ (注意,两侧都是双下划线), __WXDEBUG___UNICODE (此处是单下划线,
因为你的wxWidgets是用unicode编码编译的,所以此处一定要设置该宏,不然在编译时会收到大量"undefined reference")。
接下来你需要选择Directories项并添加include及lib目录,在这里你需要添加
"C:\wxWidgets-2.8.0\lib\gcc_lib\mswud"
"C:\wxWidgets-2.8.0\lib\gcc_lib\mswu"
"C:\wxWidgets-2.8.0\include"
"C:\wxWidgets-2.8.0\contrib\include"
这四个目录进Directories。
接下来在下面的 Miscellaneous 选项中的Other Flags中输入以下这句

-c -Wundef -Wno-ctor-dtor-privacy -fno-strict-aliasing

接下来点选到 "GCC C++ Linker" 部分。在这部分,首先选择"Libraries"并在右侧的Libraries栏中按顺序键入以下库名:

wxmsw28ud_xrc,wxmsw28ud_richtext, wxbase28ud_net, wxmsw28ud_dbgrid, wxbase28ud_odbc,wxmsw28ud_media, wxmsw28ud_aui, wxmsw28ud_html, wxmsw28ud_adv,wxbase28ud_xml, wxmsw28ud_core, wxbase28ud, wxtiffd, wxjpegd, wxpngd,wxzlibd, wxregexud, wxexpatd, kernel32, user32, gdi32, comdlg32,winspool, winmm, shell32, comctl32, ole32, oleaut32, uuid, rpcrt4,advapi32, wsock32, odbc32

库名全部加入后在下面一栏的"Library search path (-L)"中加入以下目录

"C:/wxWidgets-2.8.0/lib/gcc_lib"

"C:/wxWidgets-2.8.0/lib"

添加完成后,选择该部分中的"Miscellaneous"项,并在"Linker flags"中键入

-Wl,--subsystem,windows -mwindows

此时,点击应用。

再切换到"Build Settings"标签页,勾掉"Build Command"中的,"Use default command"前的勾儿,并将命令 make 改为

mingw32-make -fmakefile

最终,点击"OK"使设置生效。

到这里,你可以把wxwidgets中的samples拿来试一试了,把代码Copy进你的工程,编译运行一下,看看结果。

我想,你应该成功了。。。。

 

下面是第一个WxWidgets程序的代码:

#include "wx/wx.h"
using namespace std;
class MyApp:public wxApp
{
    public:
    vrtual bool OnInit();
};
class MyFrame:public wxFrame
{
public:
    MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) ;

    void OnQuit(wxCommandEvent& event);
    void OnAbout(wxCommandEvent& event);

    DECLARE_EVENT_TABLE()
};
enum
{
    ID_Quit = 1,
    ID_About,
};

BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(ID_Quit, MyFrame::OnQuit)
EVT_MENU(ID_About, MyFrame::OnAbout)
END_EVENT_TABLE()

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit()
{
    MyFrame *frame = new MyFrame( wxT("Hello World"), wxPoint(50,50), wxSize(450,340) ) ;
    frame->Show(TRUE);
    SetTopWindow(frame);
    return TRUE;
}

MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
            : wxFrame((wxFrame *)NULL, -1, title, pos, size)
{
    wxMenu *menuFile = new wxMenu;

    menuFile->Append( ID_About, wxT("&About...") ) ;
    menuFile->AppendSeparator();
    menuFile->Append( ID_Quit, wxT("E&xit") ) ;

    wxMenuBar *menuBar = new wxMenuBar;
    menuBar->Append( menuFile, wxT("&File") ) ;

    SetMenuBar( menuBar ) ;

    CreateStatusBar();
    SetStatusText( wxT("Welcome to wxWindows!") ) ;
}

void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
    Close(TRUE);
}

void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
    wxMessageBox(wxT("This is a wxWindows Hello world sample"),
    wxT("About Hello World"), wxOK | wxICON_INFORMATION, this) ;
}


 

注:
   编译wxWigets时候 mingw32-make -f makefile.gcc BUILD=release SHARED=0 UNICODE=1 USE_ODBC=1
   
SHARED = 0 表示 静态编译;SHARED =1 表示动态编译
    USE_ODBC=1 是默认的(可设置为0)    :使用ODBC数据库
    USE_GL = 1 是默认的
(可设置为0)       :使用OpenGL库
    详细编译选项见<wx/setup.h>

    如果采用动态编译,
Defined symbols预定义?)中必须定义WXUSINGDLL,如果为Debug版本还得添加MinGW的运行时库mingwm10.dll。

    上面提到的:如果编译Debug版本,需要定义
__WXDEBUG__;Release版本则不需要。

下图是:上面的代码,在vista 下动态编译的Debug 版本

   
分享到:
评论

相关推荐

    使用wxWidgets跨平台设计

    wxWidgets跨平台设计类库用C++写的啊. 还有使用wxWidgets的总体框架文档. 编译并安装的文档 搭建Eclipse+CDT+MinGW+wxWidgets开发环境 &lt;br&gt;

    Linux桌面应用开发入门指南.zip

    二、开发环境搭建 1. 安装Linux发行版:选择一款适合开发的Linux发行版,如Ubuntu、Fedora或Debian,它们提供了丰富的开发工具和软件库。 2. IDE与编辑器:安装集成开发环境(IDE)如Code::Blocks、Eclipse或Visual ...

    mingw-w64-install.zip

    总之,"mingw-w64-install.zip" 是一个用于在 Windows 10 系统上搭建 MingW-W64 开发环境的压缩包,内含 GCC 编译器和安装程序,为 C/C++ 开发者提供了便捷的开发工具链。通过这个压缩包,用户可以快速开始他们的...

    数据结构_C语言_链表多项式相加_教学示例_1741871959.zip

    数据结构学习

    Swift-Int封装

    Swift-Int

    数据结构_LaTex_Beamer_教学课件_1741868917.zip

    数据结构学习

    操作系统_夏季编程代码_Rust练习_学习记录与管理_1741865458.zip

    操作系统学习

    操作系统_内核_开发框架_SimpleKernel_学习研究_1741864525.zip

    操作系统学习

    软件开发:全面解析需求规格说明书模板的应用与编写

    内容概要:本文档旨在详细介绍如何编写一份详尽的需求规格说明书,涵盖了从产品描述、需求概述到功能细节等多个方面的规范要求。首先,文档明确编写目的、定义产品相关信息,确保读者能够迅速把握文档主旨并理解所讨论的产品背景。其次,在需求概述环节不仅介绍了产品基本功能和发展愿景,还明确了产品运行所需的硬软件环境及其限制。紧接着,功能需求部分则逐一罗列并深入解读各个具体功能点,同时注明未予实现的功能及背后原因,确保后续工作中有据可依。最后,在附录和其他可选项如数据描述、性能和运行需求等章节中继续补充,完善文档信息链,为技术人员提供坚实依据。 适合人群:面向软件开发团队成员(尤其是产品经理、分析师和技术主管),有助于他们高效梳理业务需求并向团队传达清晰的指导方针。 使用场景及目标:用于启动阶段确立项目的范围边界,辅助项目管理者规划任务分工;协助开发者深入理解和遵循既定规则开展编码作业,确保成品符合用户期望值。 阅读建议:鉴于本手册涉及多个层面的规定细则,请使用者先泛读后精读感兴趣的重点章节,同时积极与实际工作相结合,逐步掌握需求采集、整理直至呈现全过程的技术要点和实战技巧。

    2012-2021年深圳市分区新增常住人口数量(万人)

    新增常住人口数量是指在一定时期内(通常为一年),一个地区在某地居住时间达到6个月以上的人口,包括户籍人口和非户籍常住人口的净增长量。

    安卓开发_可扩展RecyclerView_分组列表_动效展示_1741871985.zip

    数据结构学习

    基于PyTorch的ResNet-18与Triplet Attention融合用于图像分类任务

    内容概要:本文展示了将Triplet Attention机制集成到ResNet-18网络架构中,以提升模型对特征的学习能力。首先介绍了Triplet Attention模块的设计思路及其三个分支——通道注意力(Channel Attention)、高度注意力(Height Attention)和宽度注意力(Width Attention)。接着定义了标准的基本残差块并在此基础上增加了自定义的三重注意力机制,最后完成了完整ResNet-18模型的搭建,其中包括输入数据经过一系列卷积操作后的逐步下采样处理以及顶层的全局均值池化层。通过调整num_class参数还可以改变最终输出类别数来适应不同的业务场景。 适用人群:熟悉深度学习基本概念,特别是对CNN(卷积神经网络)有一定了解的研究人员和技术从业者,或者想要深入了解注意力机制的应用的学生。 使用场景及目标:主要用于解决多模态特征提取问题,能够提高计算机视觉应用如图像识别或物体检测的效果,在医学影像诊断、安防监控等领域有广泛应用前景。 其他说明:提供的完整代码可以作为进一步探索此类网络结构的基础工具,并有助于研究人员进行迁移学习实验和其他相

    程序设计_算法与数据结构_竞赛学习_参考书_1741870359.zip

    数据结构学习

    智慧矿山整体解决方案【42页】.pptx

    智慧矿山整体解决方案【42页】

    基于C语言+MPU6050六轴传感器位移测算+源码(毕业设计&课程设计&项目开发)

    基于C语言+MPU6050六轴传感器位移测算+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C语言+MPU6050六轴传感器位移测算+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 基于C语言+MPU6050六轴传感器位移测算+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 基于C语言+MPU6050六轴传感器位移测算+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C语言+MPU6050六轴传感器位移测算+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~

    数据结构_算法分析_C语言_答案共享_1741868718.zip

    数据结构学习

    shuhongfan_Data_Structure_Demo_1741871175.zip

    数据结构学习

    40个战略咨询模型(41页 图片版 ).pptx

    40个战略咨询模型(41页 图片版 )

    Linux_Cpp_后台开发_进阶学习资源_1741866133.zip

    操作系统学习

    深度学习图像识别技术中CNN模型的优化及其在医疗、安防与自动驾驶中的应用

    内容概要:本文聚焦于利用深度学习改善卷积神经网络(CNN)在图像识别上的效果。首先介绍了深度学习和图像识别的历史背景和技术现状,并重点讨论了CNN的特点与发展。然后阐述了针对现有CNN模型存在的局限所做出的技术改良,包括架构设计引入残差连接和多尺度特征融合,训练策略上采取自适应学习率调整与数据增强措施,最终构建出了更具竞争力的新模型。该模型经过在CIFAR-10与ImageNet两大数据集上严格的对比测试显示,相较于同类模型有了明显的性能增长,准确率分别提升至95.2%及92.7%,训练耗时减少15%,并且模型体积更轻巧利于部署。文中也提及了图像识别具体案例研究,在医疗图像诊断、安防智能监控系统以及无人驾驶汽车环境感知环节有着重要贡献。 适用人群:对图像识别技术、深度学习感兴趣的科研工作者、高校师生以及从事相关产业技术研发的专业人士。 使用场景及目标:可用于提高各类需要精确快速定位或辨认物体应用场景下系统的运行效能;为涉及计算机视觉业务的企业提供创新性解决方案。 其他说明:文章提到模型仍然存在一些有待解决的问题比如更好的跨域迁移能力和更强的数据安全保护等方面,指明了未来的研发路径,对于

Global site tag (gtag.js) - Google Analytics