在Code :: Blocks中构建一个wxWidgets程序 [英] Building a wxWidgets program in Code::Blocks
问题描述
我正在尝试使用代码:: 创建wxWidgets示例程序块12.11但是无论我尝试什么,构建都失败。
例如,构建日志显示以下内容(项目位于X:\programming\c ++ \\ \\ HelloWxWidgets):
mingw32-g ++。exe -Wall -fexceptions -g -D_ GNUWIN32 _ WXMSW _ -DwxUSE_UNICODE -D_ WXDEBUG _ -IC:\libraries\wxWidgets-2.8.12.01 \include -IC:\libraries\wxWidgets-2.8。 12.01\contrib\include -IC:\libraries\wxWidgets-2.8.12.01\lib\gcc_lib\mswud -c X:\programming\c ++ \HelloWxWidgets\hworld2.cpp -o obj \Debug2\hworld2.o
mingw32-g ++。exe -LC:\libraries\wxWidgets-2.8.12.01\lib\gcc_lib -o bin\Debug2\HelloWxWidgets.exe obj\ Debug2 \hworld2.o -static-libgcc C:\libraries\wxWidgets-2.8.12.01\lib\gcc_lib\libwxmsw28ud.a
C:\libraries\wxWidgets-2.8.12.01\\ \\lib \gcc_lib\libwxmsw28ud.a(monolib_window.o):在函数ZN8wxWindow6UpdateEv':
GdiFlush @ 0'
C:\BuildAgent\work\wxPack\wxwidgets\build\ msw /../../ src / msw / window.cpp:1643:未定义引用
C:\libraries\wxWidgets-2.8.12.01\ lib\gcc_lib\libwxmsw28ud.a(monolib_window.o):在函数ZNK8wxWindow13GetTextExtentERK8wxStringPiS3_S3_S3_PK6wxFont':
GetTextExtentPoint32W @ 16'
C:\BuildAgent\work\wxPack\wxwidgets\build\msw /../../src/msw/window.cpp:2132:未定义引用
C:\BuildAgent\work\wxPack\wxwidgets\\ \\build\msw /../../ src / msw / window.cpp:2133:未定义引用`GetTextMetricsW @ 8'
这些是我获得的一些构建消息
C:\libraries\wxWidgets-2.8.12.01 \ lib\gcc_lib\libwxmsw28ud.a(monolib_window.o)||在函数
ZN8wxWindow6UpdateEv':|
GdiFlush @ 0'|
C:\BuildAgent\work\wxPack\wxwidgets\build\msw\..\..\src\msw\window.cpp | 1643 |未定义引用
C:\libraries\wxWidgets-2.8.12.01\lib\gcc_lib\libwxmsw28ud.a(monolib_window.o)||在函数ZNK8wxWindow13GetTextExtentERK8wxStringPiS3_S3_S3_PK6wxFont':|
GetTextExtentPoint32W @ 16'|
C:\BuildAgent\work\wxPack\wxwidgets\build\msw\..\..\src\msw\window.cpp | 2132 |未定义引用
C:\BuildAgent\work\wxPack\wxwidgets\build\msw .... \src\msw\window.cpp | 2133 |未定义引用`GetTextMetricsW @ 8' |
以下是完整的版本日志和所有构建消息(顺便说一句,我没有C:\\ \\ BuildAgent目录)
我使用 wxPack 2.8。 12 (安装在C:\ libraries \wxWidgets-2.8.12.01)和GCC 4.7.2(使用 mingw-get )
这里是Code :: Blocks中的构建选项
好吧,我终于成功了:)
我在这里发布过程,如果,像我一样,有人想在一个(最初)控制台项目中使用Code :: Blocks下使用wxWidgets。有了这个,任何人都应该能够建立/运行至少此示例代码 a Wind0ws环境:
- 我假设Code :: Blocks和MinGW正确设置。
- 从 http://www.wxwidgets.org/downloads/ 下载/安装wxMSW(在我的case下载wxMSW-2.8.12-Setup.exe并安装在C:\libraries\wxWidgets-2.8.12)
-
打开命令提示符wxWidgets需要构建,我将使用一个静态链接,单片,调试生成的示例使用unicode(更多信息 here ):
cd /DC:\libraries\wxWidgets-2.8.12\\ \\build\msw
mingw32-make -f makefile.gcc BUILD = debug SHARED = 0 MONOLITHIC = 1 UNICODE = 1
:( mingw32-make将需要一些时间来构建库)
-
打开Code :: Blocks
- 创建新的控制台项目,或者如果您已经有控制台项目(并且计划向其添加wxWidgets GUI)
- 右键点击项目>构建选项
- 这里是我用于Debug构建的构建选项。
- 构建&运行
除了wx / wx.h之外,还应包含wx / app.h
#include< wx / wx.h>
#include< wx / app.h>
I'm trying to build this wxWidgets sample program using Code::Blocks 12.11 but the build fails no matter what I try.
For example, the build log shows the following (the project is under X:\programming\c++\HelloWxWidgets):
mingw32-g++.exe -Wall -fexceptions -g -D_GNUWIN32_ -D_WXMSW_ -DwxUSE_UNICODE -D_WXDEBUG_ -IC:\libraries\wxWidgets-2.8.12.01\include -IC:\libraries\wxWidgets-2.8.12.01\contrib\include -IC:\libraries\wxWidgets-2.8.12.01\lib\gcc_lib\mswud -c X:\programming\c++\HelloWxWidgets\hworld2.cpp -o obj\Debug2\hworld2.o mingw32-g++.exe -LC:\libraries\wxWidgets-2.8.12.01\lib\gcc_lib -o bin\Debug2\HelloWxWidgets.exe obj\Debug2\hworld2.o -static-libgcc C:\libraries\wxWidgets-2.8.12.01\lib\gcc_lib\libwxmsw28ud.a C:\libraries\wxWidgets-2.8.12.01\lib\gcc_lib\libwxmsw28ud.a(monolib_window.o): In function
ZN8wxWindow6UpdateEv': C:\BuildAgent\work\wxPack\wxwidgets\build\msw/../../src/msw/window.cpp:1643: undefined reference to
GdiFlush@0' C:\libraries\wxWidgets-2.8.12.01\lib\gcc_lib\libwxmsw28ud.a(monolib_window.o): In functionZNK8wxWindow13GetTextExtentERK8wxStringPiS3_S3_S3_PK6wxFont': C:\BuildAgent\work\wxPack\wxwidgets\build\msw/../../src/msw/window.cpp:2132: undefined reference to
GetTextExtentPoint32W@16' C:\BuildAgent\work\wxPack\wxwidgets\build\msw/../../src/msw/window.cpp:2133: undefined reference to `GetTextMetricsW@8'
And these are some of the build messages that I get
C:\libraries\wxWidgets-2.8.12.01\lib\gcc_lib\libwxmsw28ud.a(monolib_window.o)||In function
ZN8wxWindow6UpdateEv':| C:\BuildAgent\work\wxPack\wxwidgets\build\msw\..\..\src\msw\window.cpp|1643|undefined reference to
GdiFlush@0'| C:\libraries\wxWidgets-2.8.12.01\lib\gcc_lib\libwxmsw28ud.a(monolib_window.o)||In functionZNK8wxWindow13GetTextExtentERK8wxStringPiS3_S3_S3_PK6wxFont':| C:\BuildAgent\work\wxPack\wxwidgets\build\msw\..\..\src\msw\window.cpp|2132|undefined reference to
GetTextExtentPoint32W@16'| C:\BuildAgent\work\wxPack\wxwidgets\build\msw....\src\msw\window.cpp|2133|undefined reference to `GetTextMetricsW@8'|
Here are the full build log and all of the build messages (by the way, I don't have a C:\BuildAgent directory)
I am using wxPack 2.8.12 (installed in C:\libraries\wxWidgets-2.8.12.01) and GCC 4.7.2 (installed separately from Code::Blocks in C:\mingw using mingw-get )
Here are the build options in Code::Blocks
- compiler settings > defines
- linker settings
- search directories > compiler
- search directories > linker
- search directories > resource compiler
Thank you in advance of your help :)
Alright, I finally managed to get it working :)
I'm posting here the procedure to follow if, like me, someone wanted to use wxWidgets in an (initially) console project under Code::Blocks. With this, anyone should be able to build/run at least this sample code in a Wind0ws environment:
- I'll assume that Code::Blocks and MinGW are correctly setup.
- Download/Install wxMSW from http://www.wxwidgets.org/downloads/ (in my case, I downloaded wxMSW-2.8.12-Setup.exe and installed it in C:\libraries\wxWidgets-2.8.12)
Open a command prompt, wxWidgets needs to be built, I'll take the exemple of a statically-linked, monolithic, debug build that uses unicode (more infos here):
cd /D C:\libraries\wxWidgets-2.8.12\build\msw
mingw32-make -f makefile.gcc BUILD=debug SHARED=0 MONOLITHIC=1 UNICODE=1
:(mingw32-make will take some time to build the library)
Open Code::Blocks
- Create a new console project, or if you already have a console project (and you plan to add a wxWidgets GUI to it) open it
- Right-click on the project > Build options
- Here are the build options that I used for the Debug build.
- Build & Run
[EDIT] wx/app.h should be included in addition to wx/wx.h
#include <wx/wx.h>
#include <wx/app.h>
这篇关于在Code :: Blocks中构建一个wxWidgets程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!