一直在寻找一个方便使用的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 版本
相关推荐
基于openocd开源工具实现的C#桌面应用工具
精品-2025人工智能神经网络基本原理解析.pdf
施耐德ATV312变频器通过MCGS RTU通讯实现双机监控与控制的触摸屏集成解决方案,无PLC的施耐德ATV312变频器通讯示例:触摸屏控制监控两台变频器,功能多且省成本,改进型可调整步长 P&O MPPT(二区MPPT复现),光储系统MPPT 直流负载供电的单级离网光伏系统中,降压转器将太阳能光伏阵列和直流负载连接起来,同时确保最大功率点跟踪(MPPT) 和电池充电控制的良好运行。 在MPPT方面,提出了一种改进的自适应步长扰动观测(P&O)方法,以达到不同天气条件下太阳能光伏阵列的实际最大功率点(MPP),同时减少稳态振荡和功率损耗。 此外,电池充电控制侧使用三级充电控制器 (TSCC) 为铅酸电池站充电。 ,改进型P&O; 复现二区MPPT; 光储系统MPPT; 最大功率点跟踪(MPPT); 步长扰动观测; 降压转换器; 太阳能光伏阵列; 电池充电控制; 三级充电控制器(TSCC); 铅酸电池站。,改进型P&O MPPT技术,光储系统高效能量管理
redis学习脑图笔记
大学生创业项目源码
Spring Boot企业员工管理系统(包含万字论文+MYSQL)
对应博客地址:https://blog.csdn.net/u011561335/article/details/146312389
相关文章:https://blog.csdn.net/liu_23yanfeng/article/details/146319189
从春晚看科技技术-陈雄 - 公开版本.pptx
在计算机上安装制造装备物联及生产管理ERP系统软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,制造装备物联及生产管理ERP系统的有效运用可以帮助管理人员准确快速地处理信息。 制造装备物联及生产管理ERP系统在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的数据库工具为Mysql。以此搭建开发环境实现制造装备物联及生产管理ERP系统的功能。其中管理员管理用户,新闻公告。 制造装备物联及生产管理ERP系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和统计,以及数据查询等处理要求,制造装备物联及生产管理ERP系统都可以轻松应对。 关键词:制造装备物联及生产管理ERP系统;SpringBoot框架,系统分析,数据库设计
传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,问卷信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广大用户的需求,因此就应运而生出相应的问卷调查系统。 本问卷调查系统分为管理员还有用户两个权限,管理员可以管理用户的基本信息内容,可以管理新闻资讯信息以及新闻资讯的租赁信息,能够与用户进行相互交流等操作,用户可以查看问卷信息,可以查看新闻资讯以及查看管理员回复信息等操作。 该问卷调查系统采用的是WEB应用程序开发中最受欢迎的B/S三层结构模式,使用占用空间小但功能齐全的MySQL数据库进行数据的存储操作,系统开发技术使用到了JSP技术。该问卷调查系统能够解决许多传统手工操作的难题,比如数据查询耽误时间长,数据管理步骤繁琐等问题。总的来说,问卷调查系统性能稳定,功能较全,投入运行使用性价比很高。 关键词:问卷调查系统;MySQL数据库;SSM技术
VID20250317191237.mp4
西门子S7-1511 PLC PID控制阀门开度与模拟量转换——博途WinCC监控画面程序实践,西门子S7-1511 PLC PID控制阀门开度与模拟量转换——博途WinCC监控画面程序实践,matlab验证码识别系统,基于数字图像处理实现。 经过对图像的预处理、二值化、区域剪裁、数字定位、模板匹配法识别数字。 有gui界面和测试图像数据集。 ,核心关键词:Matlab验证码识别系统; 数字图像处理; 图像预处理; 二值化; 区域剪裁; 数字定位; 模板匹配法识别; GUI界面; 测试图像数据集。,基于Matlab的数字图像处理验证码识别系统
内容概要:本文提供了详细的 VMware 虚拟机安装指南,涵盖软件选择(Pro 和 Player 版区别)、安装步骤(适用于 Windows 和 Linux 主机系统)、虚拟机创建以及操作系统安装指导。详细介绍了配置虚拟机的各项关键设置,如资源分配、硬件参数定制、安装 VMware Tools 提升虚拟机性能和稳定性。并且列出了快照、克隆等高级功能的具体应用,还包括共享文件夹配置和几种常见错误的排除解决方案。 适合人群:初次接触虚拟化的用户和对虚拟环境搭建有一定兴趣的技术爱好者。 使用场景及目标:帮助用户快速部署自己的虚拟机,并掌握虚拟环境中常见的配置技巧,能够针对具体应用场景灵活地调整虚拟机的相关参数,提高工作效率,满足测试、学习、开发的需求。 其他说明:提供了一些安装过程可能遇到的问题及对应解决方案,在创建和维护过程中给予指导性的意见来确保用户的使用体验尽可能顺畅无阻,并给出了部分性能优化建议。
Matlab开发初学者视频教程,零基础入门,非常适合初学者。
质子交换膜燃料电池(PEMFC)Simulink模型:静态与动态模型分析及参数计算,基于Simulink的质子交换膜燃料电池模型:静态和动态模拟,计算输出和效率,cst仿真超表面 极化复用 ,核心关键词: 1. CST仿真 2. 超表面 3. 极化复用 以上信息以分号隔开,即为“CST仿真;超表面;极化复用”。,CST仿真超表面极化复用技术
PEMFC的Simulink静态与动态模型:输出电压、功率、效率等多维度性能计算指南,质子交换膜燃料电池Simulink模型:涵盖静态与动态特性,全面计算输出性能与效率,附参考公式与文献指南,C#运动控制系统源码。 雷赛运动控制卡控制系统。 像高川控制卡、高川控制器、或者固高运动控制卡以及正运动控制器、正运动控制卡可以用这个框架,自己替一下库文件等代码就可以。 功能丰富,注释多,非常适合新手学习,也可以做框架。 ,核心关键词:C#运动控制系统源码; 雷赛运动控制卡控制系统; 高川控制卡/高川控制器/固高运动控制卡; 正运动控制器/正运动控制卡; 功能丰富; 注释多; 新手学习; 框架。,C#雷赛运动控制系统源码框架:通用控制卡编程指南
xilinx RFSOC 相关论文和资料
美赛源码