2

私は最近、Code::Blocks 10.05 で wxSmith を使用して GUI の作業を開始しました。プロジェクトを実行するとき、まだコードを書いていません。OnClose 関数だけです。プロジェクトをビルドして実行すると、4 が返されます。エラー、、、、、および。cannot find -lwxmsw28d_core_ ビルドログは次のとおりです。cannot find -lwxbase28dcannot find -lwxpngdcannot find -lwxzlibd

-------------- Build: Debug in gui-test ---------------

Compiling: gui_testMain.cpp
Linking executable: bin\Debug\gui-test.exe
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxmsw28d_core.a when searching for -lwxmsw28d_core
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib\libwxmsw28d_core.a when searching for -lwxmsw28d_core
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxmsw28d_core.a when searching for -lwxmsw28d_core
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lwxmsw28d_core
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxbase28d.a when searching for -lwxbase28d
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib\libwxbase28d.a when searching for -lwxbase28d
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxbase28d.a when searching for -lwxbase28d
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lwxbase28d
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxpngd.a when searching for -lwxpngd
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib\libwxpngd.a when searching for -lwxpngd
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxpngd.a when searching for -lwxpngd
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lwxpngd
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxzlibd.a when searching for -lwxzlibd
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib\libwxzlibd.a when searching for -lwxzlibd
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxzlibd.a when searching for -lwxzlibd
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lwxzlibd
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 1 seconds)
4 errors, 0 warnings

エラーの原因は何ですか? Windows で Code::Blocks を使用しています。そして、私はこのリンクが何をしているのかをチュートリアルとしてやっていますwxSmith Tutorial - Code::Blocks Wiki

C:\SourceCode\Libraries\wxWidgets2.8注: 役立つ場合は、wxPack から wxWidgets をインストールし、Code::Blocks でグローバル変数エディターを使用してグローバル変数を作成しましC:\SourceCode\Libraries\wxWidgets2.8\includeC:\SourceCode\Libraries\wxWidgets2.8\lib。obj (obj フォルダーが見つかりませんでした)、cflags、lflags、およびユーザー定義フィールドのように、残りのフィールドは空です。

4

3 に答える 3

1

wxWidgets の正しいデバッグ バージョンをコンパイルしなかったようです。

...\wxWidgets\build\msw フォルダーを見てください。

  • gc_mwsud (Unicode デバッグ)
  • gc_mswuddll (Unicode デバッグ共有)

あなたの場合、フォルダ

  • gcc_mswd (デバッグ)
  • gcc_mswddll (デバッグ共有)

編集

あなただけの特別なケース

x:\wxWidgets\build\msw\ ( x == ドライブ) に移動します。

x:\wxWidgets\build\msw\config.gcc を次のように変更します

....

# C compiler 
CC = gcc

# C++ compiler 
CXX = g++
....

# What type of library to build? [0,1]
SHARED = 0
....

# Compile Unicode build of wxWidgets? [0,1]
UNICODE = 0
....

# Type of compiled binaries [debug,release]
BUILD ?= debug
....

# Multiple libraries or single huge monolithic one? [0,1]
MONOLITHIC = 0

コマンドで作る。あなただけの特別なケース!!

x:\wxWidgets\build\msw>mingw32-make -f makefile.gcc

公式にサポートされている Code::Blocks の通常の方法は次のとおりです。

ソースをクリーンアップします。

mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=debug clean

注: この手順と以下のビルド手順でまったく同じオプションを使用していることを確認してください。clean ターゲットはこれらの変数を使用し、生成されたオブジェクトとライブラリ ファイルの指定されたバージョンのみをクリーンアップします。(これらの変数が同一でない場合、目的のファイルは消去されません。)

注: クリーニング後もコンパイルに問題がある場合は、build\msw ディレクトリの下にある gcc_mswd ディレクトリを手動で削除してみてください。このディレクトリは、オブジェクト ファイルが保存される場所です。

すべてがきれいになったら、wxWidgets のコンパイルを開始できます。

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

注: これらのオプションは、公式にサポートされている Code::Blocks オプションです。別のバージョンの wxWidgets (デバッグまたは非 Unicode) が必要な場合でも、Code::Blocks をリンクするための MONOLITHIC バージョン (1 つの大きな DLL) をビルドする必要があります。

忍耐。このステップには時間がかかります。続行する前に、コンパイル エラーがないことを確認してください。

http://wiki.codeblocks.org/index.php?title=Compiling_wxWidgets_2.8.6_to_develop_Code::Blocks_%28MSW%29

于 2012-08-21T13:10:21.770 に答える
0

新しいプロジェクトを作成するときは、wxwidget DLL オプションを使用してモノリシック ライブラリとして wxwidget をビルドするオプションをチェックするだけです。すでにプロジェクトが作成されている場合は、プロジェクトのリンカ設定とコンパイラ設定 (プロパティ) を追加するだけです。

于 2013-02-25T08:25:44.190 に答える
0

「非互換」とは、ライブラリが 32 ビット ファイルであり、64 ビット コンパイラを使用していることをほぼ確実に意味します。fileライブラリと、ビルド中に生成されたオブジェクト ファイルの 1 つを MinGW コマンド ラインから実行して、これを確認します。

これが正しければ-m32、デフォルトで実際に 64 ビット コードを生成する場合、解決策はコンパイラ/リンカー コマンド ラインにオプションを追加することです。または、32 ビット版のコンパイラを入手することもできます。

于 2012-08-20T11:28:58.617 に答える