VC 6.0下搭建 wxWidgets开发环境

本文详细介绍了如何在VC++6.0下搭建wxWidgets的开发环境,包括下载、安装wxWidgets源码,配置编译参数以生成静态库或动态库,以及如何创建使用wxWidgets的项目并进行编译。通过本文,读者可以快速掌握从环境搭建到项目实现的全过程。

           VC 6.0 下搭建  wxWidgets  开发环境


     和 GTK QT SWT SWING  一样, wxWidgets  也是一种开源跨平台的  GUI  框架。因  wxWidgets  和  MFC  有些渊源,有些亲近,故要体验一番  wxWidgets 。现在最新版是  2.8.7 wxWidgets  程序还可运行于  Windows CE Palm OS 。不但包括  GUI ,还有  Media Socket ODBC  等库。

详情请见 wxWidgets  的官方网站是: http://www.wxwidgets.org

本篇介绍 VC++6.0  下如何搭建  wxWidgets  的开发环境,包括编译  wxWidgets  源码和配置  VC  环境。所用  wxWidgets  的版本是  2.8.7

第一步:下载并安装 wxWidgets

在 http://www.wxwidgets.org/downloads/  下载到  wxWidgets  源码。
你可以下载 Windows  安装版  http://prdownloads.sourceforge.net/wxwindows/wxMSW-2.8.7-Setup.exe (11.9M)
或者是 Zip  压缩版  http://prdownloads.sourceforge.net/wxwindows/wxMSW-2.8.7.zip (15.9M)

假如我们下载的是 wxMSW-2.8.7-Setup.exe ,就可运行它,过程中我们假定选择的安装目录是  d:/wxWidgets-2.8.7 。 完成后,我们看到安装目录所在空间的大不是  127M

注意要给 wxWidgets  有足够的剩余空间,单是编译一个版本的静态库就会增至 300 M ,如果还要编译动态库再选择上  DEBUG  或者  RELEASE ASCII  或是  UNICODE  等,还要编译  sample  的话,最后空间能够暴到  2G

第二步:编译 wxWidgets

编译方式有两种,一种是在 VC++  中打开  wx.dsw  进行编译,另一种是用  nmake  在命令行下编译。

1) nmake 编译

运行 cmd.exe  来到命令行下,进入到目录  d:/wxWidgets-2.8.7 ,然后执行

D:/wxWidgets-2.8.7>nmake -f makefile.vc

默认是编译成 DEBUG  版的静态库。也许我们在编译之前需要根据自己的需要进行一些设置:

打开 D:/wxWidgets-2.8.7/include/wx/msw/setup.h

保证第 110  行的  #define wxUSE_DEBUG_NEW_ALWAYS  设置为  0 。默认是  的。
将 1137  行的  #define wxUSE_IOSTREAMH  设置为  0 ,否则无法使用  VC  的模板库 ( 不能用  std  命名空间下的 ) 。默认是  1
如果要使用 wxWidgets  提供支持数据库的  ODBC  类,将  #define wxUSE_ODBC  设为  1 。默认是  1

如果你想生成动态库,或生成的是 Release  版的,你可以修改  D:/wxWidgets-2.8.7/build/msw/config.vc  文件。打开该文件你能看到可以更改的选项,其中重要的几个如下:

# What type of library to build? [0,1] -- 生成库的类型, 0 为静态库, 1 为动态库
SHARED = 0

# Compile Unicode build of wxWidgets? [0,1] -- 是否使和  UNICODE 否,
UNICODE = 0

# Type of compiled binaries [debug,release] -- 是  debug  还是  release
BUILD = debug

其中还有许多顾名思义的选项,请根据需求修改。

对于 config.vc  中的选项也可以通过命令行覆盖掉配置文件中的值,如编译命令用

D:/wxWidgets-2.8.7>nmake -f makefile.vc SHARED=1 UNICODE=1 BUILD=release

就是编译 release  版,支持  UNICODE  的动态库了。

动态库和静态库的不同体现在使用上,静态库中的代码能编译进应用程序的 exe  文件中,这个  exe  文件可单独发布,但体积较庞大。动态库可让  exe  文件执行时加载,虽然  exe  文件体积小了,但发布时必须带着相应的动态库文件。

2) VC 编译
还 可用 VC++  打开  D:/wxWidgets-2.8.7/build/msw/wx.dsw ,然后选择  Build->Batch Build...  ,我们看到每个工程都有  16  个配置,请根据应用需求勾选你的配置,如所有工程的  Win32 Release  和  Win32 Debug  版本,然后  Build ,如果你照单全收,编译将非常耗时而占空间。这种编译方式就是可以一下操作帮你编译出所有需要的版本。

好, 等等编译完之后,在目录 D:/wxWidgets-2.8.7/lib/  会有产生一个目录: vc_lib  是静态库的目录,默认编译有  17  个静态。如果是编译成动态库则会产生目录  vc_dll 。在  vc_lib  中有  mswd  目录, release  版对应的是  msw ,里面含有  Debug  和  Release  版的  setup.h

注意到 Debug  版和  Release  以及和  UNICODE  、动态库、静态库组合条件编译生成的文件和目录名。
静态库编译到 D:/wxWidgets-2.8.7/lib/vc_lib  目录中
动态库编译到 D:/wxWidgets-2.8.7/lib/vc_dll  目录中
文件命名为 wxmsw28d_core.lib  文件为例:
wxmsw28_core.lib ---- Release,非  UNICODE 
wxmsw28d_core.lib ---- Debug,非  UNICODE 
wxmsw28u_core.lib ---- Release UNICODE 
wxmsw28ud_core.lib ---- Debug UNICODE 
对于 dll  文件的命名规范也一样的。
在 vc_lib  和  vc_dll  下如果全编译了会有四个目录, msw mswd mswu mswud  意义同上。

编译完后可以把那些过程中的目标文件删了,它们占的空间实在是太大。要是你还想以后重新编译用就留着吧。

第三步:创建 wxWidgets  项目

创建一个 Win32 Application  的空项目,项目名为  wxHello
Proejct->Settings (Alt+F7) 进入项目设置
1. C/C++选项卡 ->Code Generation -> use run-time library  设置为 : Debug MutilThread DLL
2. C/C++选项卡 -> PreProcessor -> PreProcessor Definitions  设置加上  __WXMSW__,__WXDEBUG__ , 如果是  Release  , 则只需加上  __WXMSW__
3. C/C++选项卡 -> PreProcessor -> Additional include directories  设置为  D:/wxWidgets-2.8.7/include,D:/wxWidgets-2.8.7/include/lib/vc_lib/mswd,  这是设置附加  Include  路径。
4. Link 选项卡 -> Input -> Object/library modules  设置加上  wxmsw28d_core.lib wxbase28d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib  这些  Lib( 没有这四个  lib comctl32.lib rpcrt4.lib winmm.lib wsock32.lib  的话请加上,关键是前两个 ) 。如果要使用  wxODBC  就加上 wxbase28d_odbc.lib
5. Link 选项卡 -> Input -> Addtional library path  设置为 : D:/wxWidgets-2.8.7/lib/vc_lib

注意:编译成不同版的执行代码应填入相应的 Additional include directories  和  Addtional library path
编译成依赖 DLL  的执行文件还需要加上预处理指令  WXUSINGDLL
UNICODE  编译则需要加上预处理指令  _UNICODE
还有一种 Universal  编译,要加上预处理指令  __WXUNIVERSAL__

这样一个普通的WxWdigets 项目就设置好了 .

 我们测试 WxWidgets  自带的例子  minimal 。新建一个  minimal.cpp  文件,内容同  D:/wxWidgets-2.8.7/samples/minimal/minimal.cpp ,编译,不出意外,成功了 !

 也可设置全局的目录

前 面我们是为项目配置 Additional Include Directories  和  Additional library path 。我们可以把这设置成全局的。就可以不用在项目中单独设置。全局设置有其缺陷,无法分开是  vc_lib  还是  vc_dll  中的  lib ,是  mswd  还是  msw  中的  wx/setup.h  文件。在这里设置  Source Files  还是必要的。并且在下面前两个  Include Files  放在全局设置里也较合适。

进到 VC++  的  Tools->Options->Directories ,选择  "Include Files"  后,添加
D:/wxWidgets-2.8.7/include
D:/wxWidgets-2.8.7/contrib/include
D:/wxWidgets-2.8.7/lib/vc_lib/mswd

对应于 Project Settings -> C/C++ Tab->Preprocessor  中的  Additional include directories

再选择 "Libraries Files" ,添加
D:/wxWidgets-2.8.7/vc_lib

对应于 Project Settings -> Link Tab -> Input  中的  Additional library path

再选择 "Source Files" ,添加
D:/wxWidgets-2.8.7/src

最后大致比较一下生成程序的大小

Release 静态库版 (vc_msw) minimal.exe 1.11M ,可单独发布
Debug 静态库版 (vc_mswd) minimal.exe 2.52M ,可单独发布
Release 动态库版 (vc_mswdll) minimal.exe 68K ,加上 wxmsw28_core_vc_custom.dll (2.85M)  和  wxbase28_vc_custom.dll (1.11M) ,共  4M
Debug 动态库版 (vc_mswddll) minimal.exe 96K ,加上 wxmsw28d_core_vc_custom.dll (4.26M)  和  wxbase28d_vc_custom.dll (1.82M) ,共  6.1M

这是一个简单的 wxWidgets  程序,只用到了两个动态库的情况。在用到  wxWidgets  库较少时用静态库来编译发布文件会小一些,若是用到组件多的时候,可能用动态库方便些,请酌情决定。 


本文转载自优快云 http://sd.youkuaiyun.com/page/8af6ed1e-b6b4-4ef9-8bc2-6f5485c79c34

计及源荷不确定性的综合能源生产单元运行调度与容量配置优化研究(Matlab代码实现)内容概要:本文围绕“计及源荷不确定性的综合能源生产单元运行调度与容量配置优化”展开研究,利用Matlab代码实现相关模型的构建与仿真。研究重点在于综合能源系统中多能耦合特性以及风、光等可再生能源出力和负荷需求的不确定性,通过鲁棒优化、场景生成(如Copula方法)、两阶段优化等手段,实现对能源生产单元的运行调度与容量配置的协同优化,旨在提高系统经济性、可靠性和可再生能源消纳能力。文中提及多种优化算法(如BFO、CPO、PSO等)在调度与预测中的应用,并强调了模型在实际能源系统规划与运行中的参考价值。; 适合人群:具备一定电力系统、能源系统或优化理论基础的研究生、科研人员及工程技术人员,熟悉Matlab编程和基本优化工具(如Yalmip)。; 使用场景及目标:①用于学习和复现综合能源系统中考虑不确定性的优化调度与容量配置方法;②为含高比例可再生能源的微电网、区域能源系统规划设计提供模型参考和技术支持;③开展学术研究,如撰写论文、课题申报时的技术方案借鉴。; 阅读建议:建议结合文中提到的Matlab代码和网盘资料,先理解基础模型(如功率平衡、设备模型),再逐步深入不确定性建模与优化求解过程,注意区分鲁棒优化、随机优化与分布鲁棒优化的适用场景,并尝试复现关键案例以加深理解。
内容概要:本文系统分析了DesignData(设计数据)的存储结构,围绕其形态多元化、版本关联性强、读写特性差异化等核心特性,提出了灵活性、版本化、高效性、一致性和可扩展性五大设计原则。文章深入剖析了三类主流存储方案:关系型数据库适用于结构化元信息存储,具备强一致性与高效查询能力;文档型数据库适配半结构化数据,支持动态字段扩展与嵌套结构;对象存储结合元数据索引则有效应对非结构化大文件的存储需求,具备高扩展性与低成本优势。同时,文章从版本管理、性能优化和数据安全三个关键维度提出设计要点,建议采用全量与增量结合的版本策略、索引与缓存优化性能、并通过权限控制、MD5校验和备份机制保障数据安全。最后提出按数据形态分层存储的核心结论,并针对不同规模团队给出实践建议。; 适合人群:从事工业设计、UI/UX设计、工程设计等领域数字化系统开发的技术人员,以及负责设计数据管理系统架构设计的中高级工程师和系统架构师。; 使用场景及目标:①为设计数据管理系统选型提供依据,合理选择或组合使用关系型数据库、文档型数据库与对象存储;②构建支持版本追溯、高性能访问、安全可控的DesignData存储体系;③解决多用户协作、大文件存储、历史版本管理等实际业务挑战。; 阅读建议:此资源以实际应用场景为导向,结合具体数据库类型和表结构设计进行讲解,建议读者结合自身业务数据特征,对比分析不同存储方案的适用边界,并在系统设计中综合考虑成本、性能与可维护性之间的平衡。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值