SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

簡単だけどつまづきやすいwxWidgetsの第一歩

Visual C++ 2005 ExpressにおけるwxWidgetsの利用手順

  • X ポスト
  • このエントリーをはてなブックマークに追加

wxWidgetsライブラリのビルド

 wxWidgetsを入手したら、さっそくzipファイルを解凍しファイルを展開します。展開後、最初に読むべきファイルは「INSTALL-MSW.txt」です。この内容にしたがってライブラリをビルドしていきます。内容を十分に把握できていないとビルド作業を何度も行うことになりえますので、よく確認しておきましょう。ビルドを始める前には以下の作業を行います。

最初に行うこと:「setup.h」の編集

 初期設定では、OpenGL関係とODBC関係が使えない状態になっています。この状態だと一部のサンプルが利用できませんので、事前に有効にしておきます。

 「include/wx/msw」フォルダの中にある「setup.h」を開いてください。「setup0.h」など似た名前のファイルがありますがそちらは無視してかまいません。

 「setup.h」の中で、次の1行(976行目)の最後の「0」を「1」に変更します。

変更前
#define wxUSE_GLCANVAS       0
変更後
#define wxUSE_GLCANVAS       1

 同様に、次の1行(1081行目)も最後の「0」を「1」に変更します。

変更前
#define wxUSE_ODBC          0
変更後
#define wxUSE_ODBC          1

プロジェクトファイルの変換

 「setup.h」周辺の修正が終わったら、次はVC++2005での作業に入ります。

 「build/msw」フォルダの中にある「wx.dsw」をエクスプローラからダブルクリックするなどして開きます。このファイルは、本来Visual C++ 6用のファイルであるため、VC++2005用に変換する作業が入ります。その変換ダイアログでは[すべてはい]を選択してください。なお、変換後は「wx.sln」のダブルクリックで起動できます。

 同じフォルダにある「wx_dll.dsw」は今回は使いません。
プロジェクトファイルの変換
プロジェクトファイルの変換

ソリューション構成の選択

 ライブラリは少なくとも2種類のものを作ることになるでしょう。Unicode ReleaseとUnicode Debugです。順序はどちらでも構いませんが、(1)ソリューション構成の選択、(2)ソリューションのビルド、を少なくとも2回繰り返すことになります。

 まずは、ソリューション構成の選択します。

ソリューション構成の選択
ソリューション構成の選択

 次に、ソリューションのビルドを行います。

ソリューションのビルド
ソリューションのビルド

 UnicodeなしのDebugやReleaseも、うまく動作しないときの待避用にビルドしておくとよいかもしれません。また、DLLやUniversalのついたものは必要に応じてビルドすればよいでしょう。ただし、DLLの場合は注意が必要と思われます。

 なお、英語の解説でバッチビルドを使うように指示しているものがありますが、全部を選択すると4倍もしくは8倍もの無駄な時間が掛かり、他方、個別に選択しようとすると誤りやすいのでお勧めできません。

ライブラリビルドの際に無視してよい警告

 本当はこういった警告は一つも出てきて欲しくないものですが、ライブラリビルドの際には無視してかまわないものがいくつかあります。確認のため、次の表にまとめておきます。

無視してよい警告
警告コード 警告内容 解説
warning C4996 'sprintf' が古い形式として宣言されました。 sprintf_sの方が安全だからとの趣旨で警告がなされます。一般化されていないということでwxWidgets側では歓迎されていないようです。warning C4996はほかにも多種多数出てきます。
warning C4819 ファイルは、現在のコードページ(932)で表示できない文字を含んでいます。 ヘッダファイルの中にANSI文字以外の著者名が書かれているため表示されるようです。
warning LNK4221 パブリック シンボルが見つかりませんでした。 「dummy.obj」ファイルに対して警告されます。もともと外部公開シンボルが定義されていないようです。
warning C4535 set_se_translator() の呼び出しは /EHa が必要です。 IDEのヘルプ検索からC4535を検索すると、例外処理に関するものであることが分かります。将来的には修正されるかもしれません。例外処理なので正常動作しているうちは問題がないと思われます。

ソリューション構成とフォルダの対応

 ビルドされたライブラリや中間ファイルは、wxWidgets内の「lib/vc_lib/mswud/」フォルダに置かれます。mswudの部分はソリューション構成ごとに変化し、次のようになっています。フォルダ名を指定したり、UniversalやDLLを指定した場合などについては「INSTALL-MSW.txt」を参照してください。

ソリューション構成とフォルダ名の対応
ソリューション構成 フォルダ名(一部)
Release msw
Debug mswd
Unicode Release mswu
Unicode Debug mswud

サンプルやデモのビルド

 ライブラリが無事にビルドできれば、後は「samples」の各フォルダで同じ作業を行うだけです。つまり「~.dsw」ファイルの変換作業を行い、ソリューション構成を選択してビルドします。もちろんソリューション構成はライブラリを構築済みのものから選択しないといけません。

 一部のサンプルや「demos」フォルダ内には「~.dsw」ファイルがありませんが、代わりに「~.dsp」ファイルを利用できます。ビルド時に「~.sln」ファイルの保存を求められることがありますが、そのまま保存して構いません。

 また、「samples.dsw」を使うと大部分のサンプルを一挙にビルドできます。

 サンプルの中にはMacintoshでしか動作しないものや、テスト用としてソースファイル内でマクロをその都度定義することを前提としたものがありますが、ここまでの作業で、ほとんどのサンプル・デモを試すことができます。

まとめ

 どちらかと言うと泥臭い作業であり、この作業自体が基礎知識に入ってしまいそうな導入手順の紹介でしたが、実はこれだけのことを解説するためにずいぶんと試行錯誤をしました。その中で学んだことは、古い情報を元にするとかえって手間がかかることもあるので、実際にwxWidgetsを使っていく際には、慎重かつ貪欲に情報を集める姿勢が必であるということです。

 サンプルを一通り試したら次はどうすべきか? これには緒論あると思いますが、「samples/internat」の研究は、いずれ欠かせないものとなるでしょう。出来上がったアプリケーションが「クロスプラットフォームだけど対応言語は英語だけ」となってしまっては、なんとも寂しいものですから。

 この多言語化も簡単なようでやはり泥臭い、色々な留意点があります。機会をいただけましたらその記事も書いてみたいと思います。

 正直なところを白状しますと私自身、「samples」や「demos」の日本語化にチャレンジしたのみで、まだ自作のwxWidgetsアプリケーションを作ったことはありません。順番から行けばそちらのほうが先ですね。

参考資料

 本記事に関しては、wxWidgets付属の文書やwww.wxwidgets.orgのフォーラムなどが情報源です。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

鈴見咲君高(すずみざききみたか)

悩めるアマチュアプログラマ。Qwertyローマ字入力でもJISかな入力でも上手に入力できない弩級の不器用さの持ち主で、自分の求める仮名文字入力法を実現するために補助ソフトを作った経歴を持つ。当然この文章もそのソフトを用いて記述。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/553 2010/01/05 11:04

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング