在Code :: Blocks中构建一个wxWidgets程序 [英] Building a wxWidgets program in Code::Blocks

查看:242
本文介绍了在Code :: Blocks中构建一个wxWidgets程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用代码:: 创建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':
C:\BuildAgent\work\wxPack\wxwidgets\build\ msw /../../ src / msw / window.cpp:1643:未定义引用
GdiFlush @ 0'
C:\libraries\wxWidgets-2.8.12.01\ lib\gcc_lib\libwxmsw28ud.a(monolib_window.o):在函数 ZNK8wxWindow13GetTextExtentERK8wxStringPiS3_S3_S3_PK6wxFont':
C:\BuildAgent\work\wxPack\wxwidgets\build\msw /../../src/msw/window.cpp:2132:未定义引用
GetTextExtentPoint32W @ 16'
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':|
C:\BuildAgent\work\wxPack\wxwidgets\build\msw\..\..\src\msw\window.cpp | 1643 |未定义引用
GdiFlush @ 0'|
C:\libraries\wxWidgets-2.8.12.01\lib\gcc_lib\libwxmsw28ud.a(monolib_window.o)||在函数 ZNK8wxWindow13GetTextExtentERK8wxStringPiS3_S3_S3_PK6wxFont':|
C:\BuildAgent\work\wxPack\wxwidgets\build\msw\..\..\src\msw\window.cpp | 2132 |未定义引用
GetTextExtentPoint32W @ 16'|
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环境:


  1. 我假设Code :: Blocks和MinGW正确设置。

  2. http://www.wxwidgets.org/downloads/ 下载/安装wxMSW(在我的case下载wxMSW-2.8.12-Setup.exe并安装在C:\libraries\wxWidgets-2.8.12)

  3. 打开命令提示符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将需要一些时间来构建库)



  4. 打开Code :: Blocks


  5. 创建新的控制台项目,或者如果您已经有控制台项目(并且计划向其添加wxWidgets GUI)

  6. 右键点击项目>构建选项

  7. 这里是我用于Debug构建的构建选项

  8. 构建&运行

除了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 toGdiFlush@0' C:\libraries\wxWidgets-2.8.12.01\lib\gcc_lib\libwxmsw28ud.a(monolib_window.o): In function ZNK8wxWindow13GetTextExtentERK8wxStringPiS3_S3_S3_PK6wxFont': C:\BuildAgent\work\wxPack\wxwidgets\build\msw/../../src/msw/window.cpp:2132: undefined reference toGetTextExtentPoint32W@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 toGdiFlush@0'| C:\libraries\wxWidgets-2.8.12.01\lib\gcc_lib\libwxmsw28ud.a(monolib_window.o)||In function ZNK8wxWindow13GetTextExtentERK8wxStringPiS3_S3_S3_PK6wxFont':| C:\BuildAgent\work\wxPack\wxwidgets\build\msw\..\..\src\msw\window.cpp|2132|undefined reference toGetTextExtentPoint32W@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

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:

  1. I'll assume that Code::Blocks and MinGW are correctly setup.
  2. 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)
  3. 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)

  4. Open Code::Blocks

  5. 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
  6. Right-click on the project > Build options
  7. Here are the build options that I used for the Debug build.
  8. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆