2016年7月6日水曜日

Windows10でWiiリモコンを使うために wiiuse

Windows10とWiiリモコンをインターフェイス

今更感のある話題ですが、Windows10のPCとWiiリモコンをインターフェイスをして,アプリの開発をしたいと思い立ちました。Wiiリモコンとのインターフェイスのためのツールはいくつかあるようですが、今回はwiiuseというものを使います。理由は2つ
  • C言語で提供されている.
  • Windows, Mac, Linuxでビルド・利用ができる.
  • 従って,特定のプラットフォームに依存することなく自分の開発するプログラムに組み込むことができそう。
  • Githubでstarが多い(←結構てきとう)

ビルド

ともかくまずはビルドしてみることにしました。README.mdの手順に従います。
まずは、Visuals Studio 2015はもちろんですが、CMakeWDKをが必要です。

CMakeでビルドプロジェクトを作成しようとすると、WINHIDの設定がなされていませんでした。
きっとWindows Driver Develop Kit(DDK)に付属したライブラリやインクルードディレクトリが見つけられなかったんだろうなぁ。。
CMakeでWINHIDの探索を定義したFindWinHID.cmakeを確認すると

set(WINHID_ROOT_DIR "$ENV{DDKROOT}")


とあるように環境変数DDKROOT以下を探していますが、そもそもDDKROOTという環境変数は定義されていません。一方で、次のようにhid.libというライブラリを探索しています。

find_library(WINHID_LIBRARY
  NAMES
  hid
  libhid
  HINTS
  "${WINHID_ROOT_DIR}"
                ・・・
そこで、エクスプローラからhid.libを検索してみました。
見つけたーーー!複数個所で見つけていますが、「C:\Program Files (x86)\Windows Kits\10\Lib\10.0.xxxx\um\x64」が妥当なのでしょうか。 ということは、、同じように探していって、、
  • WINHID_LIBRARY: C:\Program Files (x86)\Windows Kits\10\Lib\10.0.xxxx\um\x64\hid.lib
  • WINHID_INCLUDE_DIR: C:\Program Files (x86)\Windows Kits\10\Include\10.0.xxxx\shared
  • WINHID_CRT_INCLUDE_DIR: C:\Program Files (x86)\Windows Kits\10\Include\10.0.xxxx\ucrt
  • WINHID_ROOT_DIR: null (空白のまま)
(um, kmについてはおそらくドライバー モデルの選択に書いてある通りだと思う。)
そしてCmakeで「Configure」ボタンを押すと今度は次のメッセージが
SDLもいるのか。。公式サイトからVisualStudio向けのdevelパッケージをダウンロードします。展開して適切なディレクトリにおいてやります。(C:\usr以下がいいかな。)
で、それぞれINCLUDEとLIBRARYを定義します。SDL_LIBRARY_TEMPについては、FindSDL.cmakeに


# Additional Note: If you see an empty SDL_LIBRARY_TEMP in your
# configuration and no SDL_LIBRARY, it means CMake did not find your SDL
# library (SDL.dll, libsdl.so, SDL.framework, etc).  Set
# SDL_LIBRARY_TEMP to point to your SDL library, and configure again.
と書いてあるので、LIBRARYのディレクトリを指定してやりましょう。

これでようやくよさげ??(こういうときWindowsは面倒くさい)
CMakeで「Generate」ボタンを押すと、CMakeのbuildディレクトリにVisualStudioのソリューションファイルであるWiiUse.slnなどが生成されるので開きます。

Visual Studioのツールバーのビルド→バッチビルドを開いて、以下のようにビルドしたい項目にチェックを入れてビルドボタンをクリックしましょう。ALL_BUILDやINSTALLだとよくわからなかったのでPACKAGEにチェック入れてビルドしました。src以下にDebugやReleaseのディレクトリができてlibやdllのファイルができてました。
ビルドを完了しました.これらをc:/usr/以下など適切なディレクトリに配置してやりましょう.