一直在寻找一个方便使用的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跨平台设计类库用C++写的啊. 还有使用wxWidgets的总体框架文档. 编译并安装的文档 搭建Eclipse+CDT+MinGW+wxWidgets开发环境 <br>
二、开发环境搭建 1. 安装Linux发行版:选择一款适合开发的Linux发行版,如Ubuntu、Fedora或Debian,它们提供了丰富的开发工具和软件库。 2. IDE与编辑器:安装集成开发环境(IDE)如Code::Blocks、Eclipse或Visual ...
总之,"mingw-w64-install.zip" 是一个用于在 Windows 10 系统上搭建 MingW-W64 开发环境的压缩包,内含 GCC 编译器和安装程序,为 C/C++ 开发者提供了便捷的开发工具链。通过这个压缩包,用户可以快速开始他们的...
内容概要:本文详细介绍了如何使用伦茨公司的EASY Navigator软件对8400 HighLine系列变频器进行配置。主要步骤涵盖了创建项目、选择变频器类型和版本、添加通信接口、设定控制类型和电机参数、进行参数配置,如控制方式、抱闸模式、以及通讯方式。文中还提供了详细的配置指导,例如设置抱闸延迟时间和通讯确认等功能,强调了配置过程中需要注意的关键点和常见操作。另外,本文详细讲解了如何利用PROFINET和以太网/IP进行网络设置和设备之间的通信配置,并说明了如何通过发送和接收四个双字节报文来监控和控制变频器的状态和性能,确保变频器能够稳定可靠地运行。 适合人群:电气工程师、自动化技术人员及负责工业控制系统配置的专业人士,特别是有一定自动化背景并熟悉PLC编程的人群。 使用场景及目标:① 对8400 HighLine系列变频器进行初始配置及后续调整,适用于新建工程项目或者现有系统的升级改进。② 提供了一个从理论到实践的学习路径,帮助工程技术人员快速掌握变频器的基本原理及其高级应用技巧。③ 引导用户理解和实施变频器的具体配置任务,确保其能够正确响应指令、保持高效运作并减少停机风险。 其
基于Matlab的蔡氏混沌电路(Chua's circuit)系统分析,作为一种简单的非线性电子电路设计,它可以表现出标准的混沌理论行为 这个电路的制作容易程度使它成为了一个无处不在的现实世界的混沌系统的例子 蔡氏系统混沌仿真,输出lyapunov指数、分岔图、相图结果 程序已调通,可直接运行 ,Matlab; 蔡氏混沌电路; 系统分析; 非线性电子电路设计; 混沌理论行为; 制作容易; 现实世界系统例子; 混沌仿真; Lyapunov指数; 分岔图; 相图结果; 程序调通。,基于Matlab的蔡氏混沌电路系统分析:非线性电子电路的混沌仿真与结果展示
基于秃鹰搜索优化算法优化XGBoost(BES-XGBoost)的数据分类预测 BES-XGBoost数据分类 采用交叉验证抑制过拟合问题 优化参数为迭代次数、最大深度和学习率 matlab代码, 注:暂无Matlab版本要求 -- 推荐 2018B 版本及以上 注:采用 XGBoost 工具箱,仅支持 Windows 64位系统 ,基于您提供的关键信息,以下是一行提炼的关键词,以分号分隔: BES-XGBoost数据分类预测; 秃鹰搜索优化算法; 交叉验证; 抑制过拟合; 优化参数; Matlab代码; 2018B 版本及以上; XGBoost工具箱; Windows 64位系统,基于BES-XGBoost的秃鹰搜索优化算法数据分类预测与参数优化
内容概要:本文详细介绍了德国大陆公司推出的ARS 408-21车载毫米波雷达传感器。这是一种77GHz频段的高端长距离雷达产品,在感应检测区域上分为短程蓝色视野(近距感知)和远程红色视野(远距监测)。其具备高灵敏度的目标检测能力、可靠的障碍物距离与速度测量功能,适用于防碰撞、自动驾驶控制等应用。该传感器不仅支持广泛的测量距离,还可在复杂环境下精准辨识物体,并带有多种自我保护和自动诊断机制确保稳定运行。文档特别强调了其FMCW测量技术和CAN通讯接口特性,便于与其他车用电子控制系统整合,同时提供了关于安装尺寸、功耗参数等方面的详尽数据。 适用人群:从事智能交通系统、ADAS辅助驾驶研究的技术人员,汽车制造商工程师,自动驾驶硬件供应商,雷达技术研发人员及相关学术研究人员。 使用场景及目标:①提升车辆在高速公路行驶的安全性;②满足城市道路环境下的自动巡航及防碰撞性能需求;③实现远距离监控以及危险区域或难以进入地域的状态监视;④促进自动化工业领域的机器设备间协同工作。 其他说明:ARS 408-21是新一代汽车级产品,在小型化设计基础上融合更多先进传感与处理能力。它不仅符合国际电磁兼容性标准,
软考架构师17-21年四年真题及解析
内容概要:本文详细介绍了DeepSeek大模型及其在企业中的应用实践情况。主要内容涵盖大模型的发展史、类型、典型应用场景(如对话助手、个性化推荐、智能客服、智能办公、智能医疗、智能金融)、大模型与其他技术的融合应用(如RPA、知识图谱、物联网、数据分析可视化),并在企业中部署大模型的具体策略和解决方案,包括部署方式(本地/云端/边缘/混合)、实施路线、技术架构设计以及面临的挑战和应对策略。此外,文中列举了一系列典型应用案例,如瑞金医院的RuiPath、东莞市的人工智能大模型中心、云南白药的大模型应用开发平台等。文中还对未来大模型的发展方向作出了展望,认为多模态融合、生成式AI与具身智能、小模型的高效化以及端侧大模型将成为重要趋势。 适合人群:具有中级及以上技术水平的研发工程师、企业IT管理人员、数据科学家及其他对大模型及人工智能感兴趣的专业人士。 使用场景及目标:该文章帮助读者了解DeepSeek大模型在企业内的多种实际应用场景和技术部署方式,为他们制定相应策略以充分利用AI技术提升业务效率和创新能力。同时也为读者指明未来的潜在发展领域。 其他说明:文章强调了企业在采用和集成AI技术过
pcmconfigv2_1.7z
Matlab simulink 风储调频,模糊控制,风电调频,模糊控制改变风电惯性控制系数。 储能采用下垂控制。 有SOC特性,调频效果好。 纯,创新就是模糊控制 模糊控制系数随着风速和频率而改变,实现了自适应控制 mpc主要用于预测频率,3-mpc-模糊控制联合调频,模糊控制结合mpc预测的频率和风速自适应整定调频系数,进而改变调频控制功率。 ,关键词: 1. Matlab Simulink 2. 风储调频 3. 模糊控制 4. 风电调频 5. 虚拟惯性控制系数 6. 下垂控制 7. SOC特性 8. 自适应控制 9. MPC预测 10. 调频系数 以上关键词用分号分隔为:Matlab Simulink;风储调频;模糊控制;风电调频;虚拟惯性控制系数;下垂控制;SOC特性;自适应控制;MPC预测;调频系数。,基于模糊控制与MPC联合调频的风储系统优化研究
内容概要:本文介绍了神经网络的基础构建方法及其训练步骤,涵盖数据准备、模型创建、激活函数的选择以及常见问题(如过拟合并提出解决方案),最后讨论了分类问题的应用实例——MNIST手写数字识别任务。文中详细解释了每个步骤背后的原理,比如利用均方误差衡量模型性能,通过梯度下降法更新权重来最小化误差,还提到了一些常用的优化器(SGD、Adam等)的作用与区别。 适用于具有一定机器学习基础,希望深入理解神经网络工作机制的开发者或研究人员,他们可以通过此文加深对于神经网络的理解,尤其是针对图像识别等领域的问题解决思路和工具选择。 使用场景及目标:帮助读者掌握神经网络从简单到复杂的构造流程,理解训练过程中涉及到的概念和技术手段(如批量训练、学习率调整),从而能够在实际项目中应用相关技术和规避常见的坑洞(特别是过度适应训练集而导致的效果欠佳)。此外,还提供了具体的数据集案例以方便动手实践。 其他说明:该资料由NVIDIA官方出品,内容详实可靠,但需要注意版权保护。
西南交大计算机C第三章习题答案.pptx
comsol电动修复土壤,重金属污染物浓度以及土壤PH变化 ,comsol电动修复土壤; 重金属污染物浓度; 土壤PH变化,COMSOL电动修复土壤技术:重金属浓度与土壤PH变化研究
阅读习惯中的知识系统化与结构化
内容概要:本文档详细介绍了一个使用MATLAB实现的基于图卷积神经网络(GCN)的多特征分类预测项目,尤其侧重于多输入单输出的复杂分类任务。文档首先介绍了GCN的工作原理及其在多特征图数据中的优势,随后详述了该项目的具体目标,其中包括提升分类精度、解决多输入单输出的问题、探索GCN在多维度图数据的应用及优化训练效率等。接着,文档剖析了面临的八大挑战及对应解决方案,例如处理多特征数据、图数据的稀疏性和训练效率问题等。此外,文档列举了一些GCN的特点与创新之处,比如多特征输入、高效的训练策略、正则化与数据增强技术等。文中详细展示了如何通过MATLAB构建、训练和评估GCN模型,并给出具体的数据预处理、超参数调整及防过拟合策略等步骤的操作方法。 适合人群:有一定编程基础和技术背景的研发人员、从事深度学习和图卷积网络的研究人员或开发者,特别是那些关注如何处理复杂数值或网络关联关系中的多特征输入问题的人。 使用场景及目标:本项目适用于多个领域内的图数据分析任务,如社交网络、推荐系统、交通流量预测、图像分类、生物网络分析及金融欺诈检测等,其主要目标是通过构建一个准确、稳定的分类预测模型来帮助相关领域的研究人员提高工作效率。 其他说明:本项目提供了丰富的扩展可能性,如跨领城应用、引入图自监督学习、增强学习模块与图卷积网络的结合、实时预测与在线学习功能等。与此同时,为了确保良好的用户体验和高效处理大批量任务,本项目也涵盖了详细的系统架构设计方案,包括API服务、业务集成、数据流处理机制、前后端展示界面等各个方面。项目未来改进方面包括但不限于:进一步探索多模态数据融合的可能性,继续深化图神经网络的研究,提高模型的可解释性和硬件加速等。此外,文中附有完整的程序代码示例和GUI界面试图的设计思路,可以帮助用户更快捷地上手项目。
内容概要:本文档详细介绍了基于MATLAB实现的人工蜂群算法(ABC)优化BP神经网络多输入多输出预测(MIMO)的项目实例。项目旨在优化BP神经网络在MIMO预测任务中的性能,解决传统BP神经网络存在的局部最优解和收敛速度慢等问题。人工蜂群算法以其全局搜索能力和局部探索能力,显著提升了模型的预测效果。文中涵盖了从环境准备、数据预处理、构建BP神经网络、ABC算法优化、网络训练到结果评估与预测的全过程,并通过实际代码演示每一步的具体实施方法。除此之外,还包括了模型部署、多模态数据处理、API服务等方面的拓展内容,确保项目的完整性和实用性。 适合人群:具有一定编程基础的科研人员和技术爱好者,特别是从事预测建模、人工智能应用开发的专业人士。 使用场景及目标:①优化BP神经网络,提高预测模型的准确性和稳定性,特别适用于金融、医疗、工业等复杂多输入多输出预测问题;②为研究人员提供了从理论到实践的全流程指导,涵盖模型训练、评估、优化和部署等多个环节;③通过具体案例和代码实现,让学习者深刻理解智能算法在实际项目中的应用细节。 阅读建议:本项目实例全面细致,读者可以根据自身需求重点研读感兴趣的部分。建议读者先熟悉基础理论知识(如BP神经网络的工作原理、人工蜂群算法的基础概念),然后跟随文中的步骤逐步操作,配合提供的代码示例进行实践。同时,对于想深入了解模型优化、超参数调整、实时预测等高级主题的读者,项目给出了详细的扩展内容和技术讨论。
lam _22311115_06.zip
根据课件梳理而成,内容比课件多