さて、iisu SDK を使ったアプリケーションの開発環境を作ってみましょう。結構大変ですw
今回の環境は以下の通りです。
- Windows 8 Pro
- Visual Studio Ultimate
- iisu SDK 3.5.1
- DS325
ライブラリのビルド
iisu SDKのコアライブラリの一つである「easiiSDK.lib」というライブラリがあります。このライブラリはインストール時にコピーされるのですが、どうもVisual Studio 2008でコンパイルされているためか、そのままリンクさせるとリンクエラーが発生しました。調べてみるとサンプルが格納されているフォルダ(通常は「C:\Users\<ユーザー名>\Documents\iisuSDK\samples\iisu\easii\EasiiSDK」)にプロジェクト一式入っていました。まずはこのプロジェクトをVisual Studio 2012でビルドして利用できるようにします。
1. 先ほどのフォルダに「EasiiSDK.vcproj」があるので、それを開きます。
2. Debugのビルド後のコピーで、生成されたライブラリ名が違うのでに変更します
3. 変更後のコマンドは「xcopy "$(OutDir)$(ProjectName)-d.lib" "$(IISU_SDK_DIR)\lib" /y」 です
4. メニューの「ビルド|バッチビルド」からDebugおよびReleaseをビルドします
5. ビルドが正常に終了したら「C:\Softkinetic\iisu\lib」に生成されたライブラリ(easiiSDK.lib)がコピーされています。
アプリケーションの作成
2. 各種設定を追加します
- 追加のインクルード ディレクトリ:$(IISU_SDK_DIR)\include\iisu;
- 追加のライブラリ ディレクトリ:$(IISU_SDK_DIR)\lib;
- 追加の依存ファイル:
- Debug:iisuSDK.lib;easiiSDK-d.lib;
- Release:iisuSDK.lib;easiiSDK.lib;
3. コードを書きます。今回は「iisu Cpp developer guide.pdf」に載っている、最初のコードを入力しています。
// ConsoleApplication13.cpp : コンソール アプリケーションのエントリ ポイントを定義します。//
#include "stdafx.h"
#include <iostream>
#include <EasiiSDK\Iisu.h>
using namespace SK::Easii;
int _tmain(int argc, _TCHAR* argv[])
{
try {
Iisu& iisu = Iisu::instance();
iisu.init();
iisu.start();
int frame = 0;
while ( frame < 100 ) {
if ( iisu.update() ) {
iisu.acquire();
frame = iisu.getScene().getSource().getFrame();
User& user = iisu.getScene().getUser( 0 );
if ( user.isActive() ) {
auto position = user.getMassCenter();
std::cout << "User active at " << position << std::endl;
}
iisu.release();
}
}
iisu.stop();
iisu.shutdown();
}
catch ( std::exception& ex ) {
std::cout << ex.what() << std::endl;
}
return 0;
}
4. とりあえずビルドします。
5. おそらくこのような感じのエラーがでると思います
6. friend 宣言している関数の呼び出し規約が「SK_SDK_DECL(実際は__stdcall)」なのに、こちらには設定されていないので、「::」の前に「SK_SDK_DECL」を入れます。これを同様のエラーすべてに適用するとビルドができるようになります。
このコードはユーザーの検出なので、おそらくコンソール画面が表示されるだけですが、ビルドおよび実行までは確認できました。