Hatena::ブログ(Diary)

john.smithの日記 このページをアンテナに追加 RSSフィード Twitter

2010-06-24

WiiYourself!

| 18:09 | WiiYourself!を含むブックマーク WiiYourself!のブックマークコメント

2010年 6月24日 現在1.15verが最新(?)という事になっています。これをつかうという体でお願いします。これによりVS2008がおかしくなっても私としては知りません(ぇ

環境としては、Vista sp1、VS2008、ネイティブC++で行っています。

 

まず、WiiYourself!の最新版をダウンロード&展開します。(MotionpulsやBalance Boardまで使えるとかなんとか)

- WiiYourself! - gl.tter’s native C++ Wiimote library.

 

でも、これだけではhid.libというものが足りないらしく、取り合えずWDKをインストールします。

version 7600.16385.1が最新版?か分からないですが、そこら辺は気にしないことに。

デーモンなんかで仮想ディスクとして動作させればisoは問題なし。

WDKは普通Cドライブ直下にインストールされます。デフォのままでいいと思います。

それで、

 

C:\WinDDK\7600.16385.1\inc\ddk

C:\WinDDK\7600.16385.1\inc\api

 

をVS2008のインクルードのパスにセット。

 

C:\WinDDK\7600.16385.1\lib\wnet\i386

(または、C:\WinDDK\7600.16385.1\lib\wxp\i386

をVS2008のライブラリのパスにセット。

ここで同じプロジェクトに、先程展開したWiiYourself!の.cppや.hを直に突っ込みます。(ライブラリにしてくれれば楽なのに……)

それから実行すると、hidpi.hでエラー。PASSIVE_LEVELが見つからないとか。果て果て何事と調べ

 

C:\WinDDK\7600.16385.1\inc\ddk

C:\WinDDK\7600.16385.1\inc\api

 

をパスの一番下に持って行きます。

(hidpi.hの中に<wdk.h>と追加)やらなくてもいいかもしれません

そこで、

 

c:\winddk\7600.16385.1\inc\api\DriverSpecs.h(356) : error C2144: 構文エラー : 'char' は ')' によって先行されなければなりません。

 

とかなんとかエラー100個を超えてきます。はぁ、と思いながら調べ続け、そこでwiimote.cppをいじることに。

 

(中略)

 

#ifdef _MSC_VER

// disable warning "C++ exception handler used, but unwind semantics are not enabled."

// in <xstring> (I don't use it - or just enable C++ exceptions)

# pragma warning(disable: 4530)

// auto-link with the necessary libs

# pragma comment(lib, "setupapi.lib")

# pragma comment(lib, "hid.lib") // for HID API (from DDK)

# pragma comment(lib, "winmm.lib") // for timeGetTime()

#endif // _MSC_VER

 

#include "wiimote.h"

 

#include <sal.h> //

#include <sal_supp.h> // These header files just define unimportant macros

#include <driverspecs.h> //

 

extern "C" {

# ifdef __MINGW32__

# include <ddk/hidsdi.h>// from WinDDK

# else

# include <hidsdi.h>

# endif

}

#include <setupapi.h>

 

(中略)

 

すると、ライブラリの問題ががが。自分のランタイムライブラリの設定(マルチスレッドデバッグ(/MTd))はあまり変えたくなかったので、LIBCMTD.lib LIBCMD.libを無視させて乗り切ってみました。

それでもエラーがでた場合、追加の依存ファイルに変なものは言ってないか確かめてください。入れてないのにたまにマクロが入ってたりします。(設定次第?)

大体は、ReadMeにすべて書いてあるんですが、一応日本語で書きました。

参考になればいいかと。

 

参考:

Trouble with hidpi.h from WDK, trying to use WiiYourself - General Programming - GameDev.net

参考:Google グループ

 

操作について:

WiiRemoteはwiimoteクラスを使って値を取得できます。

でもって、wiimoteクラスのデストラクタで勝手にdisconnectとかやってます。二重connectとかやらなければ(やっても大丈夫だと思いますが、詳しく中身見てないので注意)、こっちは使い放題、ヒャッホウ、ウハウハだぜ。

 

値はRefreshState()を毎回呼ばないと更新されないので注意

 

二つ使うことは出来るのかと疑問に思っていますがどうでしょう。

 

参考:

404エラー

トラックバック - http://d.hatena.ne.jp/AngelBeats/20100624/1277370599