吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7808|回复: 7
收起左侧

[C&C++ 转载] 跨平台C++界面库wxWidgets+Code::Blocks编译+配置完全攻略

[复制链接]
xiao14116 发表于 2019-2-16 21:19
        wxWidgets和Code::Blocks 是什么,有兴趣的可以去谷歌或者度娘,这2个配合起来做跨平台编写C++程序很好,尤其是用惯了VS的人,因为Code::Blocks和VC++6.0非常像,可以很快的上手,现在最新的wxWidgets是3.1.1版本,Code::Blocks 是17.12版,都可以到官方网站下载,wxWidgets官方网站有windows系统的安装版,但是最好还是下载源码自己编译,Code::Blocks官方网站提供集成了windows系统的mingw32的安装版,我在windows系统下就是用的这2个版本。
       1.Code::Blocks在windows系统下安装没什么说的,有一点需要注意的是安装目录不能有汉字,这个主要是因为集合了mingw32里的gcc和g++编译器好像不支持汉字,安装完Code::Blocks会在其安装目录下有个MinGW目录,这就是mingw32编译器了,进入MinGW目录,把里面的bin目录加入系统环境变量(我的电脑上右键--属性--高级系统设置--环境变量,在path里加入bin目录的全路径,我的bin目录全路径是D:\Program Files\CodeBlocks\MinGW\bin):
1.jpg 2.png 3.png

这一步完成后记得打开cmd控制台看看GCC或者G++版本能不能正确显示,
4.png
如果正确显示,那么恭喜,第一步Code::Blocks 和编译器已经安装完成,可以进入第二步,编译wxWidgets了。

2. 先把下载好的wxWidgets-3.1.1源码解压出来,注意,解压的目录里不能有汉字和空格,这点很蛋疼,很多介绍用wxWidgets编程的文章里根本没提过这点,我直接解压到D盘根目录下了(D:\wxWidgets-3.1.1,以下不再重复说明)。
进入D:\wxWidgets-3.1.1\build\msw下,这里是用gcc编译器编译的文件,无论是windows系统还是Linux系统,只要使用gcc编译器都是到这个目录下,用系统自带的记事本打开config.gcc文件,这个文件里是编译wxWidgets必须的命令,我们编译wxWidgets不需要关注别的选项,只需要关注4个选项就可以了,分别是
# What type of library to build? [0,1]  这个选项决定了编译出来的wxWidgets文件是静态库还是动态库,如果是动态库发布程序的时候需要和动态库一同发布,否则会无法运行程序。0是静态库,1是动态库
SHARED ?= 0
# Compile Unicode build of wxWidgets? [0,1]  这个决定了编译出来的wxWidgets是不是支持UNICODE字符。0 否,1 是
UNICODE ?= 1
# Type of compiled binaries [debug,release]  这个决定了编译出来的wxWidgets是debug(支持调试),release(不支持调试)版本
BUILD ?= release
# Multiple libraries or single huge monolithic one? [0,1] 是否只产生一个单一的控件,如果用了0,那么写程序的时候需要你自己去一个一个的手动添加控件,建议用1。
MONOLITHIC ?= 1
修改好命令选项后就可以保存,然后打开cmd控制台,在命令行下进入D:\wxWidgets-3.1.1\build\msw目录下,键入命令mingw32-make -f  makefile.gcc 然后回车,等待编译完成即可
6.png
编译出来的wxWidgets库文件就保存在D:\wxWidgets-3.1.1\lib下,如果是静态库就在gcc_lib目录下,如果是动态库就在gcc_dll目录下,编译那种库看个人习惯,我个人习惯编译静态库,我为了方便就把静态库的debug版本和release版本都编译出来了,然后分别把gcc_lib目录名改成了gcc_debg_lib和gcc_release_lib以便在Code::Blocks里的debug和release版本里加入对应的wxWidgets库。如图
5.png

编译出来的文件如下:

2.png

3 Code::Blocks的配置:
打开Code::Blocks,找到并打开Settings--Global Variable Editor,点击NEW,新建一个名叫wx的变量,右边base里填入wxWidgets-3.1.1的目录,我的是D:\wxWidgets-3.1.1,如图
1.png
然后点close按钮就行了。
点击Code::Blocks界面上的create a new project在弹出的新建工程类型中选择wxWidgets project,然后点GO,如图:
3.png

下面的next配置如下:

1.png
2.png
3.png
4.png
5.png
6.png
7.png
8.png
9.png

工程创建完成了,点击Code::Blocks工具栏上那个齿轮图标编译下,肯定会出错的,下面才是重点

1.png

错误提示

2.png

这个错误是因为我们需要配置wxWidgets头文件和库文件的具体路径,鼠标右键单击Code::Blocks界面左侧自己工程名字,在弹出的选项里鼠标左键build options选项

1.png

在弹出的对话框里找到search directors,这是告诉编译器在什么地方找wxWidgets头文件和库文件的具体路径,改法如下:

2.png

改完了记得点OK保存,然后再点齿轮图标编译,继续还会提示错误:

1.png
这个错误是因为Code::Blocks预先设置的库文件和我们编译出来的库文件不一样,需要修改成我们编译出来的库文件名,鼠标右键单击Code::Blocks界面左侧自己工程名字,在弹出的选项里鼠标左键build options选项,在弹出的对话框里找到link settings ,选中libwxmsw31ud_core.a,点delete按钮删除之,鼠标左键双击libwxbase31ud.a,修改成我们编译出来的libwxmsw31ud.a,并且点击add按钮加入libwxpngd.a、libwxtiffd.a、libwxzlibd.a,最终如下:
1.png

点击OK保存,继续编译,还会报错,这次报错是提示找不到函数的实现,

2.png

这些函数可以百度之,发现微软提供的API里也有这么个函数,这是因为我们用的是mingw32的库,mingw32是模仿微软API,微软有的api它也基本都有,所以我们就可以参考微软MSDN里的函数介绍,比如上图中第一个API函数LresultFromObject函数,MSDN说他需要连接Library: Use Oleacc.lib.这个lib库,我们在上上个图的界面里加入libOleacc.a,然后编译,还会报错,现在的错误和刚才的错误一样,都是找不到函数的实现,

3.png

解决方法同上,加入libUxTheme.a,最终需要链接的库如下:


6.png


继续编译,这次没错误了,编译成功。
4.png

我们执行下程序看看:
7.png

OK,万事大吉。以后有时间了再写Linux下的安装、编译和配置。

完全手打,累死了,虽然说不上全部原创,但是有些内容是网上没有的,希望大家给我点掌声

免费评分

参与人数 5吾爱币 +10 热心值 +5 收起 理由
reddyn + 1 + 1 热心回复!
luanshils + 2 + 1 谢谢@Thanks!
wushaominkk + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
asdiopss + 3 + 1 我很赞同!
我的天空世界 + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

坏才不遇 发表于 2019-2-16 21:25
截图大师??????????
 楼主| xiao14116 发表于 2019-2-17 17:28
liuxianfu 发表于 2019-2-18 09:23
micanswer 发表于 2019-2-19 02:44
学习了,感谢楼主分享!!
cqzj70 发表于 2019-6-27 08:56
wxWidgets有点类似于MFC
yueyihuaying 发表于 2019-11-11 22:56
支持楼主
Master丶乐沫 发表于 2020-2-17 23:29
这个软件有没有中文版的,英文看的好费劲
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-9 02:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表