zyzx的小窝

C/C++,GUI,个人移动存储,zyzx_lsl@163.com

 

wxWidgets编译简介

// * create by zyzx
// * 2009-3-11
// * 转载请注明来源:http://www.cppblog.com/zyzx

         使用wxWidgets库已经有一年多了,很多时候想写点回忆性质的东西来,以备今后工作学习中参考。但每次下笔后却又因为总总原因,中断或是零碎的事情却又没再抬起过笔。虽然我目前接触了解wxWidgets时间不长,今后的工作中还不一定能够用到她,写东西也需要花费大量的精力,但我尽可能的将我所知道的表述出来,留给需要的人,减少入门花费的时间。

一、
wx库简介
          跨平台GUI库,其他的不说了。Google一下,看看是不是你所需要的。

          官方网站:http://www.wxwidgets.org/
          Wiki:http://wiki.wxwidgets.org/Main_Page

二、VS + Win32 环境编译

目标库版本: 2.8.7

编译平台: WinXP + VS2005

编译类型:动态库 + Unicode + Debug

编译目标平台: Win32

1 、打开工程 wxWidgets-2.8.7\build\msw\wx_dll.dsw ,将其转换为 vs2005 工程关闭保存,再打开工程 wx_dll.sln

2 、将解决方案配置更换为 DLL Unicode Debug

3 、依次单独编译 wxregex wxzlib wxexpat wxtiff base wxjpeg wxpng core odbc xml adv html net gl dbgrid qa richtext aui xrc media 库。

其中目前版本 odbc gl dbgrid 工程并不完善,出现编译错误忽略即可。

4 、如果以上顺利通过,那么将得到以下我们需要的库文件

编译预定义环境

wxWidgets-2.8.7\lib\vc_dll\mswud\wx\ setup.h
wxWidgets-2.8.7\lib\vc_dll\mswud\wx\msw\ rcdefs.h

wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_net_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_odbc_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_vc_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_xml_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_adv_vc_custom.dll
w
xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_aui_vc_custom.dll
w
xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_core_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_gl_vc_custom.dll
w
xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_html_vc_custom.dll
w
xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_media_vc_custom.dll
w
xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_qa_vc_custom.dll
w
xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_richtext_vc_custom.dll
w
xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_xrc_vc_custom.dll

wxWidgets-2.8.7\lib\vc_dll\wxbase28ud.lib
w
xWidgets-2.8.7\lib\vc_dll\wxbase28ud_net.lib
w
xWidgets-2.8.7\lib\vc_dll\wxbase28ud_xml.lib
w
xWidgets-2.8.7\lib\vc_dll\wxexpatd.lib
w
xWidgets-2.8.7\lib\vc_dll\wxjpegd.lib
w
xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_adv.lib
w
xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_aui.lib
w
xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_core.lib
w
xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_html.lib
w
xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_media.lib
w
xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_qa.lib
w
xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_richtext.lib
w
xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_xrc.lib
w
xWidgets-2.8.7\lib\vc_dll\wxpngd.lib
w
xWidgets-2.8.7\lib\vc_dll\wxregexud.lib
w
xWidgets-2.8.7\lib\vc_dll\wxtiffd.lib
w
xWidgets-2.8.7\lib\vc_dll\wxzlibd.lib

注意:将以上文件按照文件按照原目录相对结构拷贝到要制作的库路径下,并将 wxWidgets-2.8.7\ include 目录也拷贝到其目录下,以后要使用只需要包含这些路径即可。

           
          为了以后开发方便,设定的开发库路径为:
          wxLib\include
          wxLib\Debug\mswud\wx\msw
          wxLib\Debug

三、VS +
WinCE环境编译

目标库版本:2.8.7

编译平台:WinXP + VS2005

编译类型:静态库 + Unicode + Debug + Pocket PC 2003(ARM4)

编译目标平台:WinCE4.0以上

1、打开工程wxWidgets-2.8.7\build\wince\ wx.vcw。这个工程是evc的工程,先将其转换为vs2005的工程wx.sln。

2、打开wxWidgets-2.8.7\include\wx\minifram.h文件,在最后一个endif之前加上

//** ADD 修正wince端无法通过编译

#ifdef _WIN32_WCE

#include "wx/frame.h"

typedef wxFrame wxMiniFrame;

#endif

3、依次编译wxzlib、wxpng、wxjpeg、wxexpat、gl、mono。直接编译会有些许小问题,请看1、2楼回帖。

如果有编译事件错误,重新编译一次即可。

4、如果通过以上编译可得到如下我们需要的库文件

wxWidgets-2.8.7\lib\evc_armv4_lib\winced\wx\ setup.h
wxWidgets-2.8.7\lib\evc_armv4_lib\winced\wx\msw\ rcdefs.h
wxWidgets-2.8.7\build\wince\Pocket PC 2003 (ARMV4)\Debug\wx_wxzlib.lib
wxWidgets-2.8.7\build\wince\Pocket PC 2003 (ARMV4)\Debug\ wx_wxpng.lib
wxWidgets-2.8.7\build\wince\Pocket PC 2003 (ARMV4)\Debug\ wx_wxjpeg.lib
wxWidgets-2.8.7\build\wince\Pocket PC 2003 (ARMV4)\Debug\ wx_wxexpat.lib
wxWidgets-2.8.7\build\wince\Pocket PC 2003 (ARMV4)\Debug\ wx_gl.lib
wxWidgets-2.8.7\build\wince\Pocket PC 2003 (ARMV4)\Debug\ wx_mono.lib


注意:将以上文件按照文件按照原目录相对结构拷贝到要制作的库路径下,并将

wxWidgets-2.8.7\ include 目录也拷贝到其目录下,以后要使用只需要包含这些路径即可。

          为了以后开发方便,设定的开发库路径为:
          wxCELib\include
          wxCELib\Debug\winced\wx\msw
          wxCELib\Debug


      以上是在VS的编译环境,我也尝试过在Eclipse+GCC+WIN32环境下编译通过。由于工作生活中只接触到WIN32和WINCE环境,因此关于wx库只能做这两种环境的描述。

posted on 2009-03-11 15:29 zyzx 阅读(9984) 评论(7)  编辑 收藏 引用 所属分类: wxWidgets界面库

评论

# re: wxWidgets编译简介 2009-03-17 10:31 一灯

你好,向您请教个问题,关于wxWidget的,
我下载了wxWidget 2.8.9准备在wince下使用,但在wince下无法编译
我打开了build\wince\下的wx.dcw进行编译,但wxzli、wxpng、wxjpeg、wxepat都能通过,但mono和gl无法通过,问题如下:


6>------ 已启动全部重新生成: 项目: gl, 配置: Debug Pocket PC 2003 (ARMV4) ------
6>正在删除项目“gl”(配置“Debug|Pocket PC 2003 (ARMV4)”)的中间文件和输出文件
6>Creating ..\..\lib\evc_armv4_lib\winced\wx\msw\rcdefs.h
4>pngpread.c
6>'clarm.exe' 不是内部或外部命令,也不是可运行的程序
6>或批处理文件。
6>Project : error PRJ0019: 某个工具从以下位置返回了错误代码: "Creating ..\..\lib\evc_armv4_lib\winced\wx\msw\rcdefs.h"
6>生成日志保存在“file://D:\wxWidgets-2.8.9\build\wince\Pocket PC 2003 (ARMV4)\Debug\BuildLog.htm”
6>gl - 1 个错误,0 个警告

1>------ 已启动全部重新生成: 项目: mono, 配置: Debug Pocket PC 2003 (ARMV4) ------
2>------ 已启动全部重新生成: 项目: wxexpat, 配置: Debug Pocket PC 2003 (ARMV4) ------
1>正在删除项目“mono”(配置“Debug|Pocket PC 2003 (ARMV4)”)的中间文件和输出文件
2>正在删除项目“wxexpat”(配置“Debug|Pocket PC 2003 (ARMV4)”)的中间文件和输出文件
2>正在编译...
2>xmlparse.c
1>mono : warning PRJ0009 : 未能打开生成日志进行写入。
1>请确保该文件未被其他进程打开并且未被写保护。
2>xmltok.c
1>Creating ..\..\lib\evc_armv4_lib\winced\wx\msw\rcdefs.h
1>'clarm.exe' 不是内部或外部命令,也不是可运行的程序
1>或批处理文件。
1>Project : error PRJ0019: 某个工具从以下位置返回了错误代码: "Creating ..\..\lib\evc_armv4_lib\winced\wx\msw\rcdefs.h"
1>生成日志保存在“file://D:\wxWidgets-2.8.9\build\wince\Pocket PC 2003 (ARMV4)\Debug\BuildLog.htm”
1>mono - 1 个错误,1 个警告

我以为是生成顺序的问题,但改变顺序后依然没有解决
我改变了关于预编译的设置 依然没有解决问题,
我是个新手,关于C语言编译实在没有经验,希望能给予指教谢谢
  回复  更多评论   

# re: wxWidgets编译简介 2009-03-17 13:30 zyzx

@一灯

6>Creating ..\..\lib\evc_armv4_lib\winced\wx\msw\rcdefs.h
4>pngpread.c
6>'clarm.exe' 不是内部或外部命令,也不是可运行的程序
6>或批处理文件。
6>Project : error PRJ0019: 某个工具从以下位置返回了错误代

是正常的提示,那份从wx.dcw转换而来的工程文件,可能由于某些生成事件,对于VS后期版本不支持或是其他变更而产生的。(个人揣测)
使用 右键-》仅用于项目-》仅生成XXXX ,依次单独编译wxzlib、wxpng、wxjpeg、wxepat、gl、mono。
在第一次编译gl时,会有上面的提示。忽略,使用上面操作再次单独尝试编译gl,即可通过。这个操作生成setup.h、rcdefs.h两个文件。

谢谢 回馈。  回复  更多评论   

# re: wxWidgets编译简介 2009-03-17 15:10 一灯

我试试了下,确实如此,应该使用生成解决方案,而不是重新生成解决这样就没问题了  回复  更多评论   

# re: wxWidgets编译简介 2009-03-17 15:15 一灯

还有一个问题是 FNERR_INVALIDFILENAME 没有定义,我补了个#define FNERR_INVALIDFILENAME 0x3002就通过 了,这是在CdErr.h中定义的,  回复  更多评论   

# re: wxWidgets编译简介 2009-03-17 16:16 zyzx

@一灯

wxWidgets-2.8.7中并没有定义宏FNERR_INVALIDFILENAME ,我没有碰到这个问题。
国外有人碰到过:http://www.nabble.com/WinCE---2.8.9-td19491972.html,或许有帮助。

另外,在CE端做开发,最好不要使用过多的高级库特性。和Win32端比,还是有很多差距。  回复  更多评论   

# re: wxWidgets编译简介[未登录] 2014-06-10 17:58 刘伟

编译过wxWidgets的x64版本吗?nmake /f makefile.vc SHARED=0 UNICODE=1 BUILD=debug TARGET_CPU=X64我是这么编译的,但是在使用的时候却出现了一个问题。我建立了一个x64的工程,准备使用刚编译好的静态库,在链接的时候提示我
wxbase29ud.lib(baselib_intl.obj) : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

难道我编译的wxWidget库不是x64的?该如何确定呢?

非常期待答疑  回复  更多评论   

# re: wxWidgets编译简介 2015-04-04 11:12 murrayyang

1>------ 已启动全部重新生成: 项目: mono, 配置: Debug CHSINT SDK For WinCE 6.0 (ARMV4I) ------
1>------ 已启动生成: 项目: mono, 配置: Debug CHSINT SDK For WinCE 6.0 (ARMV4I) ------
1>Creating ..\..\lib\evc_armv4t_lib\winced\wx\setup.h
1>已复制 1 个文件。
1>正在编译...
1>dummy.cpp
1>C:\Users\Administrator\Desktop\wxWidgets-2.8.12\wxWidgets-2.8.12\include\wx/msw/wince/libraries.h(54) : fatal error C1189: #error : "Unknown SDK, please fill-in missing pieces"
1>项目 : warning PRJ0018 : 未找到下列环境变量:
1>$(CePlatform)
1>生成日志保存在“file://C:\Users\Administrator\Desktop\wxWidgets-2.8.12\wxWidgets-2.8.12\build\wince\CHSINT SDK For WinCE 6.0 (ARMV4I)\Debug\BuildLog.htm”
1>mono - 1 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

常用链接

搜索

最新评论

阅读排行榜

评论排行榜