4

Code::Blocks 12.11 を使用してこの wxWidgets サンプル プログラムをビルドしようとしていますが、何を試してもビルドに失敗します。

たとえば、ビルド ログには次のように表示されます (プロジェクトは 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): 関数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 toGetTextExtentPoint32W@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|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' への未定義の参照|

完全なビルド ログとすべてのビルド メッセージを次に示します(ちなみに、C:\BuildAgent ディレクトリはありません)。

wxPack 2.8.12 (C:\libraries\wxWidgets-2.8.12.01 にインストール) と GCC 4.7.2 ( mingw-getを使用して C:\mingw の Code::Blocks とは別にインストール)を使用しています。

Code::Blocks のビルド オプションは次のとおりです。

よろしくお願いします:)

4

3 に答える 3

4

さて、私はついにそれを機能させることができました:)

私のように、誰かが Code::Blocks の下の (最初の) コンソール プロジェクトで wxWidgets を使用したい場合に従う手順をここに投稿します。これにより、Wind0ws 環境で少なくともこのサンプル コードをビルド/実行できるようになります。

  1. Code::Blocks と MinGW が正しくセットアップされていると仮定します。
  2. http://www.wxwidgets.org/downloads/から wxMSW をダウンロードしてインストールします(私の場合、wxMSW-2.8.12-Setup.exe をダウンロードして C:\libraries\wxWidgets-2.8.12 にインストールしました)。
  3. コマンド プロンプトを開きます。wxWidgets をビルドする必要があります。Unicode を使用する、静的にリンクされたモノリシックなデバッグ ビルドの例を取り上げます (詳細はこちら)。

    cd /DC:\libraries\wxWidgets-2.8.12\build\msw

    mingw32-make -f makefile.gcc ビルド=デバッグ 共有=0 モノリシック=1 UNICODE=1

    :(mingw32-make がライブラリをビルドするのに時間がかかります)

  4. コードを開く::ブロック

  5. 新しいコンソール プロジェクトを作成するか、すでにコンソール プロジェクトがある場合 (それに wxWidgets GUI を追加する予定がある場合) はそれを開きます。
  6. プロジェクトを右クリック > ビルド オプション
  7. 以下は、デバッグ ビルドに使用し たビルド オプションです。wxWidgets の Code::Blocks ビルド オプション
  8. ビルドして実行

[編集] wx/wx.h に加えて wx/app.h を含める必要があります

#include <wx/wx.h>
#include <wx/app.h>
于 2013-03-06T00:35:54.300 に答える
0

おそらく、次のライブラリをリンカー設定に追加する必要があります (リストは VS 2012 から取得しましたが、GCC の場合は同じである必要があります。リンカーの詳細オプションに -luuid -luser32 .... を追加する必要があります)。

kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

UPD: taht chris が gdi32 lib を追加するよう提案したのを見ることができます。私には合理的に見えます。少なくともログにない関数が定義されています。

于 2013-03-05T21:25:42.680 に答える