代码之家  ›  专栏  ›  技术社区  ›  maddouri

用代码::块构建wxWidgets程序

  •  4
  • maddouri  · 技术社区  · 13 年前

    我正在努力建立 this wxWidgets sample program 使用Code::Blocks 12.11,但无论我尝试什么,构建都会失败。

    例如,构建日志显示以下内容(项目位于X:\programming\c++\HelloWxWidgets下):

    mingw32-g++.exe-墙-fexceptions-g-D_ 格努温32 _-天_ 带xmsw _-DwxUSE_UNICODE-D_ WXDEBUG公司 _-IC:\libraries\wxWidgets-2.8.12.01\include-IC:\libraries\w xWidgets-c.8.12.01\contrib\include-IC:\libraries\\wxWidget-2.8.112.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-静态libgcc C:\libraries\\wxWidets-2.8.12.01\rib\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: undefined reference to 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: undefined reference to GetTextExtentPoint32W@16' C: \BuildAgent\work\wxPackage\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|undefined reference to 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|undefined reference to GetTextExtentPoint32W@16'| C: \BuildAgent\work\wxPack\wxwidgets\build\msw。。。。\src\msw\window.cpp | 2133 |未定义的对的引用`GetTextMetricsW@8'|

    这是全部 build log 以及所有 build messages (顺便说一句,我没有C:\BuildAgent目录)

    我正在使用 wxPack 2.8.12 (安装在C:\libraries\wxWidgets-2.8.12.01中)和GCC 4.7.2(使用 mingw-get )

    以下是代码::块中的构建选项

    提前感谢您的帮助:)

    3 回复  |  直到 13 年前
        1
  •  4
  •   M4X MX    13 年前

    好吧,我终于成功地让它工作了:)

    如果像我一样,有人想在代码::块下的控制台项目中(最初)使用wxWidgets,我会在这里发布相应的过程。有了这个,任何人都应该至少能够构建/运行 this sample code 在Wind0ws环境中:

    1. 我假设Code::Blocks和MinGW设置正确。
    2. 从下载/安装wxMSW http://www.wxwidgets.org/downloads/ (在我的案例中,我下载了wxMSW-2.8-12-Setup.exe,并将其安装在C:\libraries\wxWidgets-2.8.12中)
    3. 打开命令提示符,wxWidgets需要构建,我将以使用unicode的静态链接、单片调试构建为例(更多信息 here ):

      cd/D C:\libraries\wxWidgets-2.8.12\build\msw光盘

      mingw32 make-f makefile.gcc BUILD=调试共享=0单一=1单一代码=1

      :(mingw32 make将需要一些时间来构建库)

    4. 打开代码::块

    5. 新建 控制台项目 ,或者如果您已经有一个控制台项目(并且您计划向其中添加wxWidgets GUI),请打开它
    6. 右键单击项目>生成选项
    7. Here are the build options 我用于调试构建的。 Code::Blocks build options for wxWidgets
    8. 构建&跑

    [编辑]除了wx/wx.h之外,还应包括wx/app.h

    #include <wx/wx.h>
    #include <wx/app.h>
    
        2
  •  0
  •   T-Rex    13 年前

    您可能需要将以下库添加到链接器设置中(我从VS 2012中获取了列表,但对于GCC应该是相同的,您需要将-luid-luser32…添加到链接程序高级选项中)

    kernel32.lib用户32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib外壳32.lib油32.lib油酸32.lib uuid.lib odbc32.lib odbccp32.lib数据库

    更新日期: 可以看到taht-chris建议添加gdi32lib。对我来说似乎很合理。至少 missing functions 从您的日志中定义。

        3
  •  0
  •   andrew    8 年前

    我发现一个最好的方法是在你的“其他线性选项”中添加`wx-config-libs-all`,在这个问题上,很多问题都会消失。

    wxconfig screen shot