supplibceを使う

supplibceライブラリは、Windows CE 5.0 Standard SDK CRT supplementary libraryと言うことで、New BSD License(3-clause BSD License)で公開されています。

Microsoft (eMbedded) Visual C++でWindows CEアプリケーションの開発をするとすぐに思い知らされることがあります。9x系やNT系のWindowsのWin32 APIやCRT関数の多くは使用できるのですが、いくつかは実装されていなかったり、処理内容が異なったり、別のAPIになっていたり、CRTでは宣言だ けされているものさえあります。
supplibceは、そんなCRTの憂鬱な状況をちょっとだけ緩和させるために用意した簡易実装ライブラリです。

まぁ、別にわざわざsupplibceライブラリを使用しなくてもWin APIで書けば良いだけと言えば、そうなのですが、WinCE、Windows、Unix系に可能な限り同一のコードで対応したいという欲求があり、使ってみました。

以下の注意事項があるので、もちろん自己責任で。

supplibce comes with ABSOLUTELY NO WARRANTY.
あくまで互換性確保のための簡易実装です。エラー時のerrno値の設定や、スレッドセーフなどはほとんど考慮していません。ミッションクリティカルな用途には(そのまま)使用すべきではありません。使用する場合は適宜修正すべきです。

ビルド方法は、以下のような感じです。なお、eVC環境を使ったビルド方法です。

  • ダウンロードしたファイルを展開するとarm.makとincludeおよびsrcフォルダが飛び出てきます
  • コマンドプロンプトを立ち上げます
  • 展開したフォルダにCDします
  • 環境設定用のバッチファイルを編集します

デフォルトでeVCをインストールしている場合は以下のフォルダに存在するはずです

"\Program Files\Microsoft eMbedded C++ 4.0\EVC\wce500\bin\"

で、ARM用にビルドするのであれば、WCEARMV4I.BATをベースに自分の環境に合わせてバッチファイルを編集します

編集するのは、PLATFORM、WCEROOT、SDKROOT変数に設定している値くらいと思います

どのような値にするべきかは、eVCを立ち上げていつもビルドしている状態で「ツール」→「オプション」→「ディレクトリ」タブを見れば設定するべき値がわかると思います

  • NMAKEする

nmake arm.mak

以上でlibフォルダが作成され、その中にsupplibce.libが生成される

後は、このライブラリを使いたいプロジェクトでリンクすればOKです。

あ、展開されたインクルードファイルも適切なフォルダにおいてプロジェクトのインクルードパスを通さないとコンパイルが通らないですね :)

TrackBack URL :