Windows下CodeBlocks和wxWidgets使用说明-系列2
  sK2rB2qdpS63 2023年11月13日 28 0

    这里记录了一些自己使用CodeBlocks和wxWidgets编程的说明。

1   CodeBlocks使用说明

1.1 下载wxFormBuilder(根据需要安装)

http://jaist.dl.sourceforge.net/sourceforge/wxformbuilder/wxFormBuilder_v3.0.57.exe

1.2  IDE设置

1.2.1设置编辑器为UTF-8编码

在Settings->Editor->gernal settings->Other settings,将默认保存的文件编码格式设置为UTF-8,如果有的程序文件不是UTF-8,用文本文件打开另存为UTF-8格式,保持两边编码格式相同。

Windows下CodeBlocks和wxWidgets使用说明-系列2_静态库

1.2.2 编辑器字体

Setting->Editor->General settings,点击按钮Choose,选择Courier New,11号大小。

1.2.3 编辑器每行最大长度和竖直线

Setting->Editor->Margins and caret,设置最长120字符,显示竖直线。

Windows下CodeBlocks和wxWidgets使用说明-系列2_动态库_02

1.2.4  在IDE中设置wxWidgets环境

要在Settings->Global Variables->Current Variable 增加wx变量指向wxWidgets安装目录,在Base增加D:\CrossPlatform\wxWidgets,变量在创建工程时使用,wxWidgets安装目录如有发生变化,只需更改此处。

Windows下CodeBlocks和wxWidgets使用说明-系列2_静态库_03

$(#wx)\lib\gcc_lib

$(#wx)\include

1.2.5 去掉编辑器出现的下划波浪线

在plugins->Manage plugins,拖动滚动条,找到Spell checker,选中,点击右上方的disable。

Windows下CodeBlocks和wxWidgets使用说明-系列2_动态库_04

1.3  设置自带的MinGW 13.1编译器

1.3.1 设置编译64位程序

在Settings->Compiler->Compiler Settings->#Defines增加:

__GNUWIN64__

__WXMSW__

wxUSE_UNICODE

Windows下CodeBlocks和wxWidgets使用说明-系列2_静态库_05

1.3.2  创建gdb64

要在Settings->Debuger->Create Config创建gdb64。

Windows下CodeBlocks和wxWidgets使用说明-系列2_静态库_06

Windows下CodeBlocks和wxWidgets使用说明-系列2_动态库_07

1.3.3  设置64位编译器

接着点击菜单中Settings->Compiler->Toolchain executables,在这个窗口中如下设置:

Windows下CodeBlocks和wxWidgets使用说明-系列2_编译器_08

1.4 创建wxWidgets工程

1.4.1 新建Project

选择wxWidgets project。

Windows下CodeBlocks和wxWidgets使用说明-系列2_编译器_09

1.4.2  选择wxWidgets版本

选择wxWidgets 3.2(对应安装的wxWidgets版本)。

Windows下CodeBlocks和wxWidgets使用说明-系列2_静态库_10

1.4.3  建立工程名

输入工程名、目录、作者等。

Windows下CodeBlocks和wxWidgets使用说明-系列2_编译器_11

1.4.4 选择GUI Builder

选择GUI Builder选wxSmith;Application Type选Frame或者Dialog。建议选择wxSmith,与IDE结合较紧密。

Windows下CodeBlocks和wxWidgets使用说明-系列2_静态库_12

1.4.5  选择wxWidgets位置

已经设置了显示默认$(#wx);否则选择wxWidgets安装目录。

Windows下CodeBlocks和wxWidgets使用说明-系列2_静态库_13

1.4.6  选择编译器

首选自带的MinGW 13.1编译器GNU GCC MinGW64 Compiler,勾选Debug和Release。

Windows下CodeBlocks和wxWidgets使用说明-系列2_动态库_14

 

1.4.7  选择wxWidgets编译选项(连接静态库还是动态库)

必须和你编译wxWidgets时所使用的选项一致(如果4种都编译了可以都选择,参见2.2.4和2.2.5小节)!不选择Use wxWidgets DLL,可以编译为不用动态库只有一个EXE文件。注意:工程选择后,在工程设置中没有方法修改使用动态库还是静态库,除非修改工程cbp文件。

注意:编译的是wxWigets静态链接程序时,不要选Use wxWigets DLL及wxWigets is build as a monolithic library(wxWigets是作为一个整体库构建的),编译时会出错,提示jpg,ttf之类的。在Project下的bulid option 中Linker settings添加libwX JPeg.a及libwxtiff.a即可编译。

Windows下CodeBlocks和wxWidgets使用说明-系列2_动态库_15

1.4.8  选择OpenGL

根据需要选择。

Windows下CodeBlocks和wxWidgets使用说明-系列2_编译器_16

1.4.9  编译运行

工程建立后,Resources下选择可进行可视化编辑,如想直接改代码,可切换到Projects下,Build and Run。

Windows下CodeBlocks和wxWidgets使用说明-系列2_编译器_17

1.5  打开工程的一些设置

1.5.1 打开工程后选择编译器

Project->Build options

一般都是选择自带的MinGW 13.1编译器GNU GCC MinGW64 Compiler,除非用了其他的wxWidgets版本,比如5.2节中的TDM-GCC10.3版本。

Windows下CodeBlocks和wxWidgets使用说明-系列2_编译器_18

1.5.2  打开工程后设置输出路径

Project->Properties->Build tarhets

Windows下CodeBlocks和wxWidgets使用说明-系列2_静态库_19

1.5.3   设置编译UNICODE和__UNIX__或者__WXMSW__

Project->Build options->Compiler Settings->#Defines增加:

__GNUWIN64__

__WXMSW__

wxUSE_UNICODE

__GNUWIN32__    # 在编译Windows32位程序时增加

__GNUWIN64__    # 在编译Windows64位程序时增加

wxUSE_UNICODE   # 编译时使用UTF-8编码

__WXMSW__       # 在编译Windows程序时增加

__UNIX__        # 在编译Unix、Linux程序时增加

可在Settings->Compiler->Global compiler settings>Compiler settings->Other compiler options添加下列选项:

-fexec-charset=GBK

-finput-charset=UTF-8

1.5.4  打开工程后设置原先连接静态库改为连接动态库

在Settings->Compiler->Compiler Settings->#Defines增加:

WXUSINGDLL

关闭工程文件,到工程文件目录下打开.cbp文件,首先把gcc_lib替换为gcc_dll,接着把所有类似“<Add library="libwxmsw32ud.a" />”全部删除,换为:

             <Add library="libwxmsw32ud_core.a" />

             <Add library="libwxbase32ud.a" />

Windows下CodeBlocks和wxWidgets使用说明-系列2_静态库_20

然后在下图处增加:

        <Add option="-DWXUSINGDLL" />

Windows下CodeBlocks和wxWidgets使用说明-系列2_编译器_21

该设置一般情况下是可用的(很奇怪为啥在IDE不能选择)。

建议:最好重新建立工程。

1.6   连接C++静态库

codeblocks发现编译代码失败,跳出一个ligcc_s_sjli.dll missing。解决方法如下文所述。然后再other linker options 框内粘贴如下语句

-static-libgcc

-static-libstdc++

这样程序拷贝到其他地方运行就不用拷贝libstdc++-6.dll、libgcc_s_seh-1.dll和libgcc_s_sjlj-1.dll(大部分情况下不管用,其实按照上述编译好wxWidgets,建立好工程,一般不会出现)。

Windows下CodeBlocks和wxWidgets使用说明-系列2_编译器_22

2  错误解决

2.1 fatal error: wx/setup.h

win环境上,报错wx/setup.h:No such file or directory时,路径改为wx/msw/setup.h。

到wx的目录下,找到include\wx\platform.h文件,用Codeblocks打开它,用菜单栏的Search->Find功能,找到#include"wx/setup.h"一行(或者根据编译错误提示直接打开定位)。将"wx/setup.h"改为"wx/msw/setup.h",然后保存修改后的platform.h文件即可。

官方给的下载包里的wx.chm帮助文件有这个问题的解决办法意思是说,wx/...目录里根本没有setup.h文件,首先要在platform.h文件里进行配置。格式大致是 #include"wx/XXX/setup.h",而这里的XXX是根据你所用的操作系统的不同而改变的,例如WINDOW下就改成"wx/msw/setup.h",而MacOS就改成"wx/mac/setup.h"。

2.2  cannot find -|wxmsw31u等cannot find

发生以下错误时 cannot find -|wxmsw31u等cannot find提示,修改Project|build options,清空linker setting里的所有,添加wxWidgets\lib\gcc_dll\里需要用到的或所有。

2.3  error converting to execution character set illegal byte

https://blog.csdn.net/qq_46663243/article/details/124531566

编译时报错:error converting to execution character set illegal byte sequence。原因Windows(中文)默认的字符集是Windows-936(GBK),而GCC编译器默认编译的时候是按照UTF-8解析的,当未指定字符集时一律当作UTF-8进行处理。所以要在Settings->Compiler->Global compiler settings->Other options添加,一般情况下不用设置。

-fexec-charset=GBK

-finput-charset=UTF-8

Windows下CodeBlocks和wxWidgets使用说明-系列2_动态库_23

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  1z4DPON8I3dd   2023年11月02日   54   0   0 idebc动态库
  u3oonBy2zpm7   2023年11月02日   31   0   0 ide动态库Server
sK2rB2qdpS63