一直在寻找一个方便使用的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 版本
相关推荐
chromedriver-linux64-136.0.7070.0.zip
数据结构学习
最长上升子序列(Longest Increasing Subsequence,LIS)问题是指在一个给定的无序序列中,找到一个最长的单调递增子序列的长度。动态规划的核心思想是通过求解子问题来得到原问题的解。
内容概要:本文深入探讨了‘全栈’这一软件开发概念。首先明确了全栈不仅仅是指某一个人掌握所有技术,更重要的是拥有跨多个技术领域能力,并能在项目中提供从头到尾的一站式解决方案。文中列举了几项对于全栈开发至关重要技能集,例如:前端(HTML/CSS/Javascript等)、后端(如Python/Django、Java/Spring)、数据库管理以及服务器与部署方面专业知识。同时提到,相比传统分工明确的角色,采用全栈思路可以带来更高的效率、更大的灵活性和更强的整体感知,有助于理解整个系统构架并作出最优决策。最后介绍了全栈开发的一些实际应用场景,在小规模创业企业和大型企业的合作场景中,都能找到其独特的发挥空间;同时也指出成为全栈专家需要持续努力学习,面临着技术覆盖面宽泛所带来的巨大挑战。 适合人群:有兴趣深入了解或者转型成为全栈开发者的程序员。 使用场景及目标:为正在考虑向全能型人才发展的个人提供指导,解释为什么学习全栈开发是有益处的同时给出学习路线图和潜在风险提示。 其他说明:该资料来源于CSDN上的技术博主分享,包含大量真实案例和个人见解,可以帮助有志者更好地规划自己的职业生涯发展道路。
内容概要:本文介绍了图像识别技术的核心原理及主要流程。首先介绍通过摄像头或传感器完成图像获取并转成数字格式,随后通过去噪、增强等一系列预处理操作来提高图片质量。再利用多种方法,特别是深度学习手段比如SIFT,HOG和CNN做关键点如边缘、纹理等的特征提取,用标注过的数据训练模型。经过以上步骤之后进行最终的分类与识别,在这一步骤当中为了使图像得到最精确表达还会涉及非极大值抑制(NMS)、上下文信息利用等后处理操作。除此之外,本文还列举了几项核心技术,即自动提取特征的CNN、加速训练进程的迁移学习方法、定位识别目标物体的技术(YOLO/Faster R-CNN),以及实现像素级的分类(U-net/Mask R-CNN)等。另外还探讨了这一技术的应用领域如人脸检测助力支付验证与安全保障工作、自动驾驶方面对道路车辆和行人的识别,还有医疗影像分析帮助疾病的早期发现以及工业制造中产品检测等多方面的实际应用场景及其发挥的作用。 适合人群:对于图像识别有兴趣的研究人员或从业者;从事相关领域工作,希望通过深入学习理论知识和技术要点提高业务水平的研发工程师或者产品经理。 使用场景及目标:希望读者能够通过对
最长上升子序列(Longest Increasing Subsequence,LIS)问题是指在一个给定的无序序列中,找到一个最长的单调递增子序列的长度。
数据结构学习
功能描述: 就业管理员则负责岗位类型、招聘信息以及简历投递等流程的管理,保障了招聘流程的顺畅和有效。企业用户通过系统发布招聘信息、管理收到的简历,并组织面试流程。学生用户可管理个人资料、投递简历、接收面试邀请并查看面试结果,为他们的就业之路提供便利和支持。 更多详细信息:https://blog.csdn.net/u011832806/article/details/145713085 本项目是基于Springboot+Vue开发的高校毕业生就业信息管理系统,高分通过项目,已获导师指导。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。也可作为课程设计、期末大作业 标价包含:项目源码、万字LW、数据库脚本、开发说明文档、安装部署视频、代码讲解视频、全套软件等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea
蓝桥杯嵌入式ADC&LCD(二)
数据结构学习
该项目是一个基于ConVNeXt模型的图像分类系统,旨在通过深度学习技术实现高效的图像分类任务。系统主要由三个模块组成:模型训练、推理预测和工具函数。首先,train.py脚本负责模型的训练过程,用户可以通过命令行参数设置模型类型、优化器、学习率、批量大小等超参数。训练过程中,脚本会自动进行数据预处理、模型初始化、训练与验证循环,并保存最佳模型权重和训练日志。训练结束后,系统会生成损失曲线、准确率曲线、混淆矩阵、recall、F1、precision、ROC曲线和AUC值等可化结果,帮助用户评估模型性能。其次,infer.py脚本用于推理预测,可以通过Streamlit提供的Web界面上传图像,系统会调用训练好的模型进行图像分类,并返回预测结果及其置信度 本项目训练了30个epoch,精度约为0.84 关于AI改进参考:https://blog.csdn.net/qq_44886601/category_12858320.html
内容概要:本文详细介绍了AUTOSAR EthernetSwitchDriver (EthSwt),这是AUTOSAR架构中用于管理和控制车载以太网交换机的重要模块。文章从多个角度进行了详尽讲解,涵盖架构设计、配置模型、初始化和配置流程以及各个功能的具体实施方式,并深入探讨了EthSwt的状态机运作原理和不同硬件变体的支持情况,强调了标准化和硬件无关的特性。 适合人群:从事汽车电子控制系统及相关领域研究的专业人士、AUTOSAR开发工程师以及对车载网络感兴趣的开发者。 使用场景及目标:①帮助工程师理解和掌握EthSwt的运作机制;②指导如何进行交换机配置与控制;③探索适用于不同类型车辆网络架构的最佳实践。 阅读建议:鉴于文中涉及众多具体细节和技术知识点,建议读者事先熟悉AUTOSAR基本概念,尤其是通信服务子层的内容,以便更好地理解文档所阐述的信息。此外,实际项目开发时可以根据文中提供的配置示例来辅助设计更为合理的解决方案。
内容概要:本文全面介绍了Postman这一广泛应用于API测试的强大工具的基本功能和高级特性,包括下载安装、接口测试方法,自动化测试流程设定,通过全局与环境变量提高效率的方法,利用外部文件实现参数化,编写与使用测试脚本进行断言检验,搭建Mock Server模拟未完成的后端API服务,生成详细的API文档便于协作,以及设置性能监控确保系统稳定性的具体步骤。每一个知识点配上了实际的例子进行详细解读,帮助使用者深入理解Postman的各项特性和操作技巧。 适合人群:软件开发工程师,尤其是专注于Web服务或移动应用程序开发的技术人员;QA工程师或从事软件质量保障的专业人士;想要提升API测试能力的所有技术人员。 使用场景及目标:①为正在构建RESTful或其他HTTP风格的网络服务团队提供一个简单而强大的测试平台;②加速前后端分离项目的进展,通过快速建立有效的接口测试计划,减少部署过程中可能出现的问题;③促进持续集成环境下的代码质量提升,借助高效的自动化机制缩短回归测试周期。 其他说明:Postman不仅是一款优秀的接口调试辅助工具,同时也支持高度灵活的工作流整合,例如与Jenkins这样的
操作系统学习
chromedriver-mac-arm64-134.0.6998.88.zip
内容概要:本文档旨在为‘某某项目’提供全面的产品需求规格说明,适用于金融类产品需求文档编写。文档涵盖从总体介绍、用户群分析、标准规范定义,到各模块特性说明以及风险管理等多个维度的内容,确保技术团队、管理层及其他相关人员对项目的理解和统一认知。特别强调网站建设的功能需求和技术栈的选择,例如采用了PHP、Object C等多种技术和Oracle作为后台支持,并深入剖析了资讯模块和互动模块的具体功能设计与操作流程。 适用于金融产品研发阶段的不同利益相关方,包括但不限于企业高层管理人员、项目经理、开发人员、测试工程师和其他相关人员。他们可以通过该文档了解并掌握即将构建的新产品的完整构想及其详细的实施方案,以便协调各自的任务。 使用场景及目标:该文档主要用于项目启动前期的需求梳理和确认,确保各方就项目的目的、范围达成一致共识,并为其后续设计阶段提供了重要指导方针。同时,在整个项目周期中亦作为沟通桥梁供相关人员参考,特别是涉及到迭代更新或功能调整时更是发挥了关键作用。此外,还用于软件的质量测试基准确立,以确保最终交付品符合预期质量标准。 其它说明:本文档属于公司机密文件,注意保管。
该数据集旨在分析、理解和预测学生的抑郁水平,为心理健康和教育领域的研究提供支持。它涵盖了多种特征,包括人口统计学、学术、生活方式和心理因素,能够帮助研究人员探索影响学生心理健康的各种因素。数据以CSV格式存储,每行代表一名学生的信息,列则包含不同的属性。具体包括:学生的唯一标识符(ID)、年龄、性别、所在城市、平均绩点(CGPA)、睡眠时长、兼职或全职职业、工作压力、学业压力、学习满意度、工作满意度、饮食习惯以及抑郁状态等。数据特点:多维度分析:结合了人口统计学、学术和心理数据,提供了全面了解影响学生心理健康因素的视角。适用性强:适用于心理学家、教育工作者和数据科学家等,可用于心理健康研究、教育洞察以及政策制定支持。、机器学习应用:是训练预测模型以检测抑郁早期迹象的理想选择,有助于及时干预和预防措施的实施。可定制和可扩展:数据集结构支持添加新特征,适合多样化的研究和分析需求。通过该数据集,研究人员可以识别导致学生抑郁的关键因素,如学业压力、工作生活平衡和生活方式等。教育工作者可以了解学业压力和学习满意度对心理健康的影响,从而改善学习环境。此外,它还能为学校、学院和大学的心理健康政策等。
大型语言模型(LLMs)通过提升疾病分类和临床决策能力,正在彻底改变医学诊断领域。在本研究中,我们评估了两种基于LLM的诊断工具——DeepSeek R1和O3 Mini——在包含症状和诊断的结构化数据集上的表现。我们评估了它们在疾病和类别层面的预测准确性,以及其置信度评分的可靠性。DeepSeek R1在疾病层面达到了76%的准确率,总体准确率为82%,优于O3 Mini,后者分别达到72%和75%。值得注意的是,DeepSeek R1在心理健康、神经系统疾病和肿瘤学方面表现出色,准确率达到100%,而O3 Mini在自身免疫疾病分类中也取得了100%的准确率。然而,两种模型在呼吸系统疾病分类上都面临挑战,DeepSeek R1和O3 Mini的准确率分别为40%和20%。此外,置信度评分分析显示,DeepSeek R1在92%的案例中提供了高置信度预测,而O3 Mini则为68%。本研究还讨论了与偏见、模型可解释性和数据隐私相关的伦理问题,以确保LLM负责任地融入临床实践。总的来说,我们的研究结果为基于LLM的诊断系统的优缺点提供了有价值的见解,并为未来人工智能驱动的医疗保健改进提
数据结构学习
数据结构学习