
リソースからの画像: ru.wikipedia.org 、著者:ブライアン・ペティ。
Wikiからの抜粋: wxWidgetsは、ソースコードレベルでクロスプラットフォームアプリケーションを開発するための、特にグラフィカルユーザーインターフェイス (GUI)を構築するための オープンソースツールの クロスプラットフォーム ライブラリです 。
ライブラリには、グラフィックイメージ、HTML、XMLドキュメント、アーカイブ、ファイルシステム、プロセス、印刷サブシステム、マルチメディア、ネットワーク、マルチスレッドの編成、デバッグ、ダンプの送信などのツールを操作するための一連のクラスがあります。
注意! 猫のトラフィックの下で!
3年前、私は上記のライブラリを使用したクロスプラットフォームプログラミングに興味を持ちました。 このライブラリを作成するたびに、多くの問題が発生しました。 問題は、ライブラリに重大なバグがあるという事実とは関係ありませんでしたが、コンパイル(アセンブリ)を必要とするこのようなツールを使用する場合は、付随する文献に注意を払う必要があるという事実と関係がありました。
理解できる言語で話すには、マニュアル、
readme-
、
FAQ
などを注意深く読む必要があり
readme-
...
ネットワークでの
wxWidgets
構築と使用に関する記事は十分にありますが、経験を共有することが必要だと考えています。肯定的な結果につながる手順を説明し、プロジェクトで
wxWidgets
を使用し始めている開発者がすくいを少なくするために何が起こっているのかを説明します。このライブラリのすべての機能を使用するようにすぐに切り替えました。
それでは、行きましょう。
ライブラリを
Windows 7 Professional x32 SP1
オペレーティングシステムでビルドします。 他の
OS
に関しては、
Ubuntu Desktop 12.04
用の
wxWidgets
のアセンブリはそれほど難しくなく、すべてが順調に進んでいます。 GNU / Linuxでビルドするには、 このマニュアルを使用できます。
IDE (コードエディターおよびビルドオートメーション)として、 Code :: Blocksを使用します。 彼についてはすでに多くの人が聞いていると思うので、詳細には触れません。
C::B
は、大規模なアプリケーションを作成するのに十分な強力なツールであり、
wxWidgets
ツール
wxWidgets
を使用するように直接「調整」されていることを
wxWidgets
ます。 このライブラリを使用して、それ自体を組み立てました。
1)コンパイラー、デバッグツール、およびプリセットのインストール:
デバッグツール(
)は通常、コンパイラーと共にデフォルトでインストールされます
GCC
などの場合、これは控えめな名前の
GDB
持つファイルです。
FAQ:初心者開発者が最初に直面するレーキは、ライブラリのビルドに使用されるコンパイラの誤ったインストールです。 ほとんどは、実際にWindows
wxWidgets
を開発するTDM-GCC
代わりにMinGW
をインストールしWindows
。リンク :TDM-GCC
は、mingw
用にコンパイルされた新しいgcc
リリースのアルファ版mingw
mingw
の現在の公式リリースには、mingw
開発者がmingw
前のgcc 3
以降のgcc
バージョンがmingw
れています。 そのため、開発者の1人が新しいgcc
構築を開始し、インストールされたmingw
gcc
を置き換えるように設計されたパッケージをレイアウトしmingw
。 現在、gcc 4.5
はmingw
http://sourceforge.net/downloads/mingw/MinGW/BaseSystem/GCC/Version4/ xsでも利用できます。
MinGW
インストールすると、ライブラリをビルドできますが、非常に低い確率で、おそらくアセンブリの最後に、数分待った後、次のようなエラーメッセージが表示されることに注意してください。
if not exist ..\..\lib\gcc_lib\mswud mkdir ..\..\lib\gcc_lib\mswud
g++ -c -o gcc_mswud\monolib_treectrl.o -g -O0 -mthreads -DHAVE_W32API_H -D__WXMSW__ -D_UNICODE -I..\..\lib\gcc_lib\mswud -I..\..\include -W -Wall -DWXBUILDING -I..\..\src\tiff\libtiff -I..\..\src\jpeg -I..\..\src\png -I..\..\src\zlib -I..\..\src\regex -I..\..\src\expat\lib -I..\..\src\stc\scintilla\include -I..\..\src\stc\scintilla\lexlib -I..\..\src\stc\scintilla\src -D__WX__ -DSCI_LEXER -DLINK_LEXERS -DwxUSE_BASE=1 -Wno-ctor-dtor-privacy -MTgcc_mswud\monolib_treectrl.o -MFgcc_mswud\monolib_treectrl.od -MD -MP ../../src/msw/treectrl.cpp
makefile.gcc:9395: recipe for target 'gcc_mswud\monolib_treectrl.o' failed
ダウンロードセクションの公式
TDM-GCC
コンパイラWebサイトにアクセスし、オペレーティングシステムのビット深度(
x32
または
x64
)に対応する最新の安定バージョンをダウンロードしてインストールします。 この場合、これは
tdm-gcc-4.8.1-3.exe
です。
さらに、標準手順:インストールウィザードを実行し、デフォルトオプションでコンパイラをインストールします。
ヒント:プログラム、ライブラリ、パッケージの解凍などをインストールする場合は、プログラムインストールウィザードのデフォルト設定を使用することをお勧めします。 私を信じて、これは図書館やプログラムの周りのタンバリンと一緒にはるかに少ない心配、そして少ないダンスを引き起こします。 これは、ライブラリ、プログラム、およびすべての種類のコンパイラに適用されます。
コンパイラのセットアップは、バイナリコンパイラアセンブリへのパスをシステム環境変数Pathに追加することで構成されます(デフォルトのインストールウィザードがそうしなかった場合)。 通常、これは次のとおりです
C:\TDM-GCC-32\bin
(
C:\
ドライブのルートディレクトリがインストール(アンパック)ディレクトリとして選択されている場合。

チェック:ヘルスチェックは次のアクションで構成されます:コマンドライン(CMD
)を実行し、単にコマンドを実行します:mingw32-make -v
それぞれ、リンカーのmake buildのバージョンを確認します。 次のようなものが表示されます。
2)
wxWidgets
ダウンロード、解凍、ビルドし
wxWidgets
:
ダウンロードセクションの
wxWidgets
公式サイトにアクセスし、
OS Windows
ライブラリの最新の安定バージョンをダウンロードして解凍し
OS Windows
。 私たちの場合、これは
wxMSW-Setup-3.0.0.exe
(
Windows Installer
)です。
さらに、標準手順:アンパックウィザードを実行し、デフォルトオプションでライブラリをアンパックします。
コンパイラの事前設定では、
WXWIN
システム環境
WXWIN
追加し
WXWIN
。これには、ライブラリのルートディレクトリへのパスが含まれます。 通常、これは次のとおりです
C:\wxWidgets-3.0.0
(
C:\
ドライブのルートディレクトリがインストール(アンパック)ディレクトリとして選択されている場合。

実際に組み立てに進みます。 コマンドライン(
CMD
)を起動し、次のコマンドを順番に実行します(それぞれの完了を待っています):
cd %WXWIN%\build\msw
mingw32-make -f makefile.gcc clean
mingw32-make -f makefile.gcc BUILD=debug SHARED=0 MONOLITHIC=0 UNICODE=1 WXUNIV=0
mingw32-make -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=0 UNICODE=1 WXUNIV=0
通常、ビルドオプションの数は指定された数を超えません。
これらのオプションの目的を分析しましょう。
BUILD
モードのライブラリアセンブリ:debug
(デバッグ)またはrelease
(アプリケーションのリリースバージョン)。
SHARED
ライブラリアセンブリタイプ:0-static
静的アセンブリ、1-dynamic
動的アセンブリ。
MONOLITHIC
-すべてのライブラリを1つに収集しますMONOLITHIC
はい、0-いいえ、ライブラリを理解する最初の段階で便利です。
UNICODE
-Unicodeサポート:1-はい、0-いいえ。
WXUNIV
すべてのOS
共通のインターフェース要素を収集します:1-はい、0-いいえ。 (または、これらの要素が欠落しているオペレーティングシステム用の独自のコントロールを組み立てます)。
ビルドプロセスは次のスクリーンショットのようになります。

3)
IDE Code::Blocks
ダウンロード、インストール、構成
IDE Code::Blocks
:
ダウンロードセクションの
Code::Blocks
プログラムの公式サイトにアクセスし、
OS Windows
プログラムの最新の安定したバイナリリリースをダウンロードしてインストールし
OS Windows
。 私たちの場合、これは
codeblocks-13.12-setup.exe
です。 コンパイラなしでバージョンをダウンロードする必要があります。 コンパイラを以前にインストールしました。ほとんどの場合、
C::B
付属する「新しい」コンパイラです
C::B
FAQ、注: codeblocks-13.12mingw-setup.exeファイルには、TDM-GCC(バージョン4.7.1、32ビット)のGCCコンパイラーとGDBデバッガーが含まれています。 codeblocks-13.12mingw-setup-TDM-GCC-481.exeファイルには、TDM-GCCコンパイラ、バージョン4.8.1、32ビットが含まれています。 v4.7.1は堅固です(C :: Bのコンパイルに使用)が、v4.8.1は便宜上提供されていますが、このバージョンにはCode :: Blocksのコンパイルに関連する既知のバグがいくつかあります。
不明な場合は、「codeblocks-13.12mingw-setup.exe」を使用してください!
注:合計コンパイル時間は、平均で約30〜40分かかります。 はい、ライブラリはそれほど小さくなく、クラスがたくさんあります。
次に、標準の手順でインストールウィザードを実行し、デフォルトオプションでプログラムをインストールします。
開発環境の設定は、デフォルトのコンパイラの設定になります。 通常、
C::B
最初の開始時に、見つかったすべてからメインコンパイラを選択するダイアログ(
TDM-GCC
選択)が表示されますが、このダイアログが表示されない場合があります。 次に、
C::B
を起動し、メインメニュー項目からコンパイラ設定に移動します。
Settings-->Compiler : Toolchain executables
チェーンの
Settings-->Compiler : Toolchain executables
と、
C::B
を構成するスクリーンショット付きのアナロジー

チェック:開発環境の作業環境をチェックし、コンパイラの正しい構成を確認するには、次のようにC::B
でテストコンソールプロジェクトを作成する必要があります。
1)C::B
実行します(以前に実行されていない場合)。
2)メニュー項目に移動します:File-->New-->Project
開いたダイアログ(Project
)のProject
、Console application
を選択し、[Go
]ボタンをクリックします。
3)プロジェクトプリセットダイアログのプロンプトに従い、プロジェクトパラメータ(名前、場所など)を設定し、[Next
]ボタンをクリックしてから[Finish
];
プロジェクトコードエディターが開きました。 そうでない場合は、メインメニュー項目を選択します:View-->Manager
、View-->Toolbars-->Compiler
main.cpp
マネージャーツリーでソースコードを開き、
このようなコードがあるはずです:
![]()
必要に応じて編集します。
4)メインメニュー項目を選択します:Build-->Build and Run
、コンパイルされたアプリケーションを確認します:
![]()
4)
wxWidgets
を使用してテストプロジェクトを作成します。
C::B
が開始されていない場合は開始し、メインメニュー項目に移動します:作成されたプロジェクトのすべてのタイプの
File-->New-->Projects
、
wxWidgets project
選択し、[
Go
]ボタンをクリックします。

プロジェクトの事前設定の表示されたウィンドウで、プロンプトに従ってください:
1)[Next
]ボタンをクリックします。
![]()
2)wxWidgets 3.0.x
で使用するライブラリのタイプを選択し、[Next
]ボタンをクリックします。
![]()
3)プロジェクトパラメータ名、ソースへのパスなどを設定し、[Next
]ボタンをクリックします。
![]()
4)プロジェクトの作成者を設定し(これはスキップできます)、[Next
]ボタンをクリックします。
5)wxSmith
フォームwxSmith
を選択します(wxFormBuilder
はプレインストールされていないため)。また、作成するFrame Based
アプリケーションのタイプを選択し、[Next
]ボタンをクリックします。
![]()
6)ローカル変数に$(WXWIN)
、$(wx)
代わりに$(WXWIN)
を設定し、[Next
]ボタンをクリックします。
![]()
7)コンパイラ(通常はデフォルト)を選択して[Next
]ボタンをクリックします。
![]()
8)アセンブリの場合(モノリシックではなく静的)、次のウィンドウのパラメーターは次のようになります。
![]()
[Next
]ボタンをクリックして、ダイアログに同意します。
9)作業に必要なクラスを選択します。
アセンブリの方法によっては、静的-動的、モノリシック、および次のウィンドウがないかどうかが異なります。
![]()
[Finish
]ボタンをクリックします。
グローバルプロジェクト変数は、次のように構成する必要があります(
Settings-->Global variables
):

プロジェクト設定は次のようになります(
Project-->Build options
):
Project build options
ウィンドウ(
wx_test
)[
Compiler settings - Other options
タブ
Compiler settings - Other options
]:
-pipe
-mthreads
-Winvalid-pch
-include wx_pch.h
Project build options
ウィンドウ(
wx_test
)[
Compiler settings - Other options
タブ
Compiler settings - Other options
]:
__GNUWIN32__
__WXMSW__
wxUSE_UNICODE
WX_PRECOMP
Project build options
ウィンドウ(
wx_test
)[
Linker settings
タブ]:

Project build options
ウィンドウ(
wx_test
)[
Search directories - Compiler Resource compiler
タブの
Search directories - Compiler Resource compiler
]:
$(WXWIN)\include
Project build options
(
Debug
)ウィンドウ[
Linker settings
タブ]:

Project build options
(
Debug
)ウィンドウ[
Search directories - Compiler Resource compiler
タブ]:
$(WXWIN)\lib\gcc_lib\mswud
Project build options
(
Debug
)ウィンドウ[
Search directories - Linker
]:
$(WXWIN)\lib\gcc_lib
Project build options
(
Release
)ウィンドウ[
Linker settings
タブ]:

Project build options
(
Release
)ウィンドウ[
Search directories - Compiler Resource compiler
タブ]:
$(WXWIN)\lib\gcc_lib\mswu
Project build options
(
Release
)ウィンドウ[
Search directories - Linker
]:
$(WXWIN)\lib\gcc_lib
次に、プロジェクト
Project build options
設定プロジェクト
Project build options
オプションの[
]ボタンをクリックして、設定を保存します。
アプリケーションをコンパイル(コンパイル)します(
Build --> Build and run
):

よくある質問
よくある質問:
質問/問題:
システムパスを設定してください!
回答/解決策:
パスの設定(WXWIN):
C:\ wxWidgets-2.9.4
質問/問題:
存在しない場合gcc_mswud mkdir gcc_mswud
process_begin:CreateProcess(NULL、-c "存在しない場合gcc_mswud mkdir gcc_mswud"、...)が失敗しました。
make(e = 2):= xєЄЄєЇ。
mingw32-make:[gcc_mswud]エラー2(無視)
存在しない場合.. \ .. \ lib \ gcc_lib mkdir .. \ .. \ lib \ gcc_lib
process_begin:CreateProcess(NULL、-c "存在しない場合.. \ .. \ lib \ gcc_lib mkdir .. \ .. \ lib \ gcc_
lib "、...)が失敗しました。
make(e = 2):= xєЄЄєЇ。
mingw32-make:*** [.. \ .. \ lib \ gcc_lib]エラー2
回答/解決策:
cmdを実行:set PATH = c:\ mingw \ bin
質問/問題:
CodeBlocks wxWidgetsの場所:
回答/解決策:
$(#wx)から$(WXWIN)
質問/問題:
グローバル変数版
設定->コンパイラおよびデバッガ->コンパイラ設定タブ->コンパイラオプション
回答/解決策:
ベース:C:\ wxWidgets-2.9.4
include:C:\ wxWidgets-2.9.4 \ include
lib:C:\ wxWidgets-2.9.4 \ lib
cflags: `wx-config --cflags`
lflags: `wx-config --libs`
その他のオプション:
`wx-config --cxxflags`
`wx-config --cflags`
`wx-config --libs`
方法については。 一般に、Code :: BlocksでwxWidgetsプロジェクトを作成すると、ヘッダーとライブラリをリストする代わりに、設定にコマンドが表示されることがわかります。
`wx-config --cflags`-コンパイラー設定
`wx-config --libs`-リンカー設定
so:wx-configはスクリプトです。 これらのコマンドを通常のコンソールに入力すると、一連のフラグとファイルが生成されることがわかります。 wx-configにはヘルプがあります:wx-config --help。 このスクリプトの呼び出しのすべてのバリエーションを説明しています。 静的オプションに注意してください。
種類Cのエラー:\ wxWidgets-3.0.0 \ include \ wx \ platform.h | 189 |致命的なエラー:wx / setup.h:そのようなファイルまたはディレクトリがありません|
解決策は次のとおりです。
プロジェクト->ビルドオプション...
デバッグ(検索ディレクトリ)
$(WXWIN)\ lib \ gcc_lib \ mswud <-> $(WXWIN)\ lib \ gcc_dll \ mswud
トラブルもあります。 たとえば、ルーラーは次のエラーを生成する場合があります。
rem gcc_mswudll \ monodll_xh_combo.o:ファイルが認識されません:メモリが使い果たされました
rem collect2.exe:エラー:ldが1つの終了ステータスを返しました
rem mingw32-make.exe:*** [.. \ .. \ lib \ gcc_dll \ wxmsw28u_gcc.dll]エラー1
メモリ不足のためにモノリシックダイナミックライブラリを構築するときに、一部の32ビットプラットフォームで表示されます。 リンカはx86アーキテクチャ用に構築されているため、x86_64アーキテクチャでも2GBを超えるアドレスを使用できません。 したがって、通常、コンパイラの変更は役に立たず、MinGW4.4.1TDM、MinGW4.6.xファミリ全体、およびMinGW4.7.0も試行されますが、ネットワークにはTDM-GCC 4.5.2 sjljの下で収集された情報があります。
この場合にコンパイルするには、コンパイラオプション-fno-keep-inline-dllexportを指定する必要があります。
mingw32-make -f makefile.gcc CXXFLAGS = "-fno-keep-inline-dllexport" BUILD =リリースSHARED = 1モノリシック= 1 UNICODE = 1
リンカーに--large-address-awareオプションを使用することもできます(コンパイラーも使用できます)が、OSを構成する必要があります。
モノリシックアセンブリを使用せずに問題を回避することも、モノリシックアセンブリ用の動的ライブラリの作成を中止することにより、このエラーなしで静的ライブラリを収集することもできます。
更新:
並べ替えのエラー:このファイルには、ISO C ++のコンパイラとライブラリのサポートが必要です
2011標準 このサポートは現在実験的であり、-std = c ++ 11または-std = gnu ++ 11コンパイラオプションです。
このファイルには、コンパイラとライブラリのサポートが必要です...
これらは、ライブラリをビルドするときにオプションを明示的に指定することで解決されます(オプションを追加):
CXXFLAGS = "-std = gnu ++ 11"
Upd1:おそらく最新のMinGWリリースではバグが修正され、指定されたコンパイラーを使用して安全に収集できるようになり、同じ(説明された)ルールを順守しています。
P /S。
この投稿は、プログラマーの初心者を主な対象としており、究極の真実であると主張するものではありません。
次の投稿では、 OpenCVコンピュータービジョンライブラリを「正しく」アセンブルする方法について説明します 。
ご清聴ありがとうございました。