忍者ブログ
プログラミングとか日常とかの覚書っぽいなにか
[16] [15] [14] [13] [12] [11] [10] [9] [8] [7] [6]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

昨日から挑戦している ARDeskTop。
ここではそのインストール過程をメモっておきます。

参考サイト
ARDeskTop Wiki (wah_wah_hawah 様)
http://wiki.livedoor.jp/wah_wah_hawah/

※7/26 修正しました
私が以前にARToolkitを試したときの環境が残っていたためにGLUTを改めて入れなくても動いてしまっていたため、GLUTのインストールに関する記述を含めていませんでした。ARToolkitでビルドエラーが起こる原因も私の手違いだったようなので、記述を修正しました。


圧縮ファイル解凍ツール

まず、「.tar.bz2」形式と「.zip」形式のアーカイブ(圧縮ファイル)を展開可能な解凍ソフトが必要なので準備しておきましょう。
一般的に使われることの多い「Lhaplus」「解凍レンジ」など多くの解凍ソフトは対応していると思います。
ちなみに私は「Explzh」を使用。


Microsoft Visual C++ 2008 Express Editions のインストール

実行ファイル単体で配布されているのではないので(まあアーカイブには開発者環境で作成された実行ファイルも含まれていますが)、自分のPCでビルドできる環境を作ります。
開発ツールとしてフリーで提供されている「Microsoft Visual C++ 2008 Express Editions」(以下、「VC」と記載)を使用することにします。
以下のURLから「Visual C++ 2008 Express Edition」の「Web インストール(ダウンロード)」をダウンロードして実行し、VCをインストール。

Microsoft Visual Studio 2008 Express Editions
http://www.microsoft.com/japan/msdn/vstudio/express/


ARToolKit のインストール

ARToolKit を、以下のサイトを参考にインストールします。

工学ナビ - ARToolKitを使った拡張現実感プログラミング
http://kougaku-navi.net/ARToolKit.html

が、面倒なので、上記サイトでも紹介されている「コンパイル済みのバイナリ」を使うことにしました。
指定されたダウンロード先の「ARToolKit-2.72.1-bin-win32.zip」をダウンロードして解凍。
私の環境では「D:\develop」以下に展開し、「D:\develop\ARToolKit」フォルダに解凍されたファイルが作られるようにしています。


GLUTのインストール(7/26 追記)

以下のサイトよりGLUT(OpenGL Utility Toolkit)をダウンロードします。

Nate Robins - OpenGL - GLUT for Win32
http://www.xmission.com/~nate/glut.html

ビルド済みライブラリを含む「glut-3.7.6-bin.zip」をダウンロードします。
アーカイブを解凍し、3つのファイルをそれぞれ以下のとおりにコピーします。
  • glut32.dll → 「D:\develop\ARToolKit\bin」にコピー(あとでARDesktopの実行ファイルと同じフォルダにコピーしますが、ひとまずここにコピー)
  • glut32.lib → 「D:\develop\ARToolKit\lib」にコピー
  • glut.h → 「D:\develop\ARToolKit\include」に「GL」フォルダを作成してそのフォルダ内にコピー
本来ならGLUT用のフォルダを準備して、そこに配置すべきなのでしょうけど。今回はARToolkit関連でしか使わないので、ARToolkitのインクルードフォルダやライブラリ格納フォルダと同じ位置にコピーしておけば十分です。


FreeType のインストールとビルド

以下のサイトよりFreeTypeライブラリをダウンロードします。

The FreeType Project
http://freetype.sourceforge.net/index2.html

「Downloads」の「Stable releases」からリンクをたどった以下のページ

SourceForge.net 内の The FreeType Project
http://sourceforge.net/project/showfiles.php?group_id=3157

で、最新のバージョン(現時点では2.3.9)のアーカイブ「freetype-2.3.9.tar.bz2」をダウンロードして解凍。
私の環境では「D:\develop」以下に展開し、「D:\develop\freetype-2.3.9」フォルダに関連ファイルやフォルダが作られるようにしています。

解凍が済んだら、環境変数 FREETYPE の設定を行います。
システムのプロパティ(マイコンピュータを右クリック→プロパティ または コントロールパネルからシステム)を開き、「詳細設定」タブの「環境変数」ボタンを押して、環境変数ウィンドウを開きます。
ここの下部にある「システム環境変数」の「新規」ボタンを押して、以下のように項目を追加(変数値のフォルダ名は、自分がFreeTypeを展開したフォルダ名で置き換えてください)。
  • 変数名:FREETYPE
  • 変数値:D:\develop\freetype-2.3.9

以下のFreeTypeのソリューションファイルを開き、ビルドを行います。
D:\develop\freetype-2.3.9\builds\win32\vc2008\freetype.sln

VCのメニューバーから [ビルド]→[バッチビルド] を選択。
以下の6個の構成項目が表示されているので、全部のチェックボックスをチェックして[ビルド]ボタンを押し、ビルドします。
  • Debug
  • Debug Multithreaded
  • Debug Singlethreaded
  • Release
  • Release Multithreaded
  • Release Singlethreaded

すべてのビルドが正常に完了したら、「D:\develop\freetype-2.3.9\objs\win32\vc2008」フォルダにある以下の .lib ファイルをすべて「D:\develop\freetype-2.3.9\objs」に移動(またはコピー)します。
  • freetype239.lib
  • freetype239_D.lib
  • freetype239MT.lib
  • freetype239MT_D.lib
  • freetype239ST.lib
  • freetype239ST_D.lib

※まあ、実際にARDeskTopで使っているのはマルチスレッド版(Multithreaded または MT と付いているもの)だけなので、バッチビルドで「Debug Multithreaded」と「Release Multithreaded」だけ選択ビルドし、「freetype239MT.lib」と「freetype239MT_D.lib」だけコピーしておけば十分であったりします。ですから、時間が惜しいのであればこの2つだけでもいいです。ビルドも結構時間かかりますしね。


FTGL のインストールとビルド

以下のサイトよりFTGLライブラリをダウンロードします。

Herny Maddocks' Home Page
http://homepages.paradise.net.nz/henryj/code/index.html

「Download FTGL」からリンクをたどった以下のページ

SourceForge.net 内の FTGL
http://sourceforge.net/project/showfiles.php?group_id=202130

で、最新バージョン(現時点では2.1.3-rc5)のアーカイブ「ftgl-2.1.3-rc5.tar.bz2」をダウンロードして解凍。
私の環境では「D:\develop」以下に展開し、「D:\develop\ftgl-2.1.3~rc5」フォルダに関連ファイルやフォルダが作られるようにしています。

次に、以下のFTGLのソリューションファイルを開きます。
D:\develop\ftgl-2.1.3~rc5\msvc\vc8\ftgl.sln

なぜか私の環境では .sln ファイルをダブルクリックで開こうとしても何も起こらなかったので、スタートメニューからVCを起動し、メニューの[ファイル]→[開く]→[プロジェクト/ソリューション]で上記ファイルを選択。
このソリューションは古いバージョンのVC用(VC2005用)であるので、.slnを開くと自動的にVC2008用のソリューションに変換するための変換ウィザードが実行されます。
ここは、ウィザードで指示されたとおりに変換を実行しておきます。

次に、VCの画面のソリューションエクスプローラから「ftgl_dll」を右クリックし、[プロパティ]メニューを選択すると、「ftgl_dllプロパティページ」というウィンドウが開かれます。
ここの左上の「構成」を「Debug」(または「アクティブ(Debug)」)にします。
左のリストで [構成プロパティ]→[リンカ]→[入力] を選択し、「追加の依存ファイル」のファイルリストの一部を以下のように変更します。
  • freetype234_D.lib → freetype239_D.lib
変更したら、[適用]ボタンを押します。
さらに左上の「構成」を「Release」(または「アクティブ(Release)」)に変更して、「追加の依存ファイル」の一部を以下のように変更します。
  • freetype235.lib  → freetype239.lib
変更したら、[OK]ボタンを押してウィンドウを閉じます。

VCのメニューバーから [ビルド]→[バッチビルド] を選択
以下の4個の構成項目が表示されているので、全部のチェックボックスをチェックして[ビルド]ボタンを押し、ビルドします。
  • ftgl_dll Debug
  • ftgl_dll Release
  • ftgl_static Debug
  • ftgl_static Release

※ここでも、あとで実際にARDeskTopで使われるのはDLL版だけなので「ftgl_dll Debug」と「ftgl_dll Release」だけ選択ビルドしておけば十分でなのですが、現状のARDeskTopのプロジェクトでは ftgl.lib だけではなく必要ない(はずの)ftgl_static.lib も参照しているので、ここでftgl_staticをビルドしておかないと後でARDeskTopをビルドしたときにlibが見つからないというエラーを出してくれます。まあ、このエラーはARDeskTopのプロジェクトプロパティで不要なlib参照を削除すれば解決するのですが。


OpenCV のインストール

以下のサイトよりOpenCVライブラリをダウンロードします。

OpenCV@Chihara-Lab.
http://chihara.aist-nara.ac.jp/opencv/

「インストール」の「ダウンロード」からリンクをたどった以下のページ

SourceForge.net 内の Open Computer Vision Library
http://sourceforge.net/project/showfiles.php?group_id=22870

で、最新の正式バージョン(betaやpreの付いていないもの。現時点では1.0)のインストーラ実行ファイル「OpenCV_1.0.exe」をダウンロード。
OpenCV_1.0.exe を実行すると自動的にインストールが開始され、インストール先を変更しなければ「C:\Program Files\OpenCV」にOpenCVがインストールされます。

次に、環境変数PATHに「C:\Program Files\OpenCV\bin」を追加します。
一応、上記のインストーラ実行中にオプションでチェックを入れると環境変数が設定されるようですが、なぜか私の環境ではインストール完了直後では反映されていなかったようでした。おそらくWindowsをログオフして再度ログオンすれば反映されていると思うのですが。

手動で環境変数を設定する場合には上記 FreeType で環境変数を設定したときと同様にシステムのプロパティから環境変数ウィンドウを表示して設定します。
既に「システム環境変数」に「Path」の項目が存在するので、その項目を選択して[編集]ボタンを押します。
すでにある変数値の文字列を消さずに、最後にセミコロン「;」で区切って「C:\Program Files\OpenCV\bin」を追加します。


ARDeskTop のインストールとビルド

以下のサイトよりARDeskTopをダウンロードします。

ARDeskTop Wiki
http://wiki.livedoor.jp/wah_wah_hawah/

ARDeskTop Wiki 内の ARDeskTop ダウンロードページ
http://wiki.livedoor.jp/wah_wah_hawah/d/%a5%c0%a5%a6%a5%f3%a5%ed%a1%bc%a5%c9

アーカイブをダウンロードして解凍。
私の環境では「D:\develop」以下に展開し、「D:\develop\ARDeskTop」フォルダに関連ファイルやフォルダが作られるようにしています。

以下のARDeskTopのソリューションファイルを開きます。
D:\develop\ARDeskTop\ARDeskTop.sln

初期状態では、ARDeskTopをビルドするときに、ARDeskTopが使用する各種ライブラリのインクルードファイルやlibファイルを見つけることができない状態にあります。そのため、プロパティの設定で、そのフォルダ位置を指定してやる必要があります。
その方法は以下の2通りがあります。
  1. VCオプションを変更して、すべてのプロジェクト・ソリューションで参照設定が使用されるようにする
  2. プロジェクトのプロパティを変更して、そのライブラリを使用しているプロジェクトのみで参照設定が使用されるようにする
ここでは2番目の方法を使うことにしました(しかし公開されているARDeskTopのプロジェクトファイルが随時更新されることを考えると、1番目のほうがよかったかなと今更ながら思っていますが)。

VCの画面のソリューションエクスプローラから「ARDeskTop」を右クリックし、[プロパティ]メニューを選択すると、「ARDeskTopプロパティページ」というウィンドウが開かれます。
ここの左上の「構成」を「すべての構成」にします。
左のリストで [構成プロパティ]→[C/C++]→[全般] を選択し、「追加のインクルードディレクトリ」に以下のパスをセミコロン「;」で区切って入力します(またはフォーカスをあわせたときに表示される[...]ボタンを押してリストに入力することも可能)。
  • C:\Program Files\OpenCV\cv\include
  • C:\Program Files\OpenCV\cvaux\include
  • C:\Program Files\OpenCV\cxcore\include
  • C:\Program Files\OpenCV\otherlibs\highgui
  • D:\develop\freetype-2.3.9\include
  • D:\develop\ftgl-2.1.3~rc5\src

次に [構成プロパティ]→[リンカ]→[全般] を選択し、「追加のライブラリディレクトリ」に以下のパスをセミコロン「;」で区切って入力します(またはフォーカスをあわせたときに表示される[...]ボタンを押してリストに入力することも可能)。
  • C:\Program Files\OpenCV\lib
  • D:\develop\ARToolKit\lib
  • D:\develop\freetype-2.3.9\objs
  • D:\develop\ftgl-2.1.3~rc5\msvc\build

入力が完了したら[適用]ボタンを押します。
これで参照フォルダの設定は完了。

そのまま、他のプロパティの設定変更を続けます。

現状のままビルドを行うと、セキュリティ強化された関数を使っていないために大量の警告が発生するので、それに関する警告を無視する設定を行います。
左上の「構成」を「Release」(または「アクティブ(Release)」)に変更して、 [構成プロパティ]→[C/C++]→[プリプロセッサ] を選択します。
すでに「プリプロセッサの定義」に文字列が入力されているので、既に入力されている部分は変更せず、その後ろにセミコロン「;」で区切って「_CRT_SECURE_NO_WARNINGS」を追加します。
次に「構成」を「Debug」(または「アクティブ(Debug)」)に変更し、同様に「プリプロセッサの定義」で、既に入力されている部分は変更せず、その後ろにセミコロン「;」で区切って「_CRT_SECURE_NO_WARNINGS」を追加します。

さらに、「構成」が「Debug」の状態で [構成プロパティ]→[リンカ]→[入力] を選択し、「追加の依存ファイル」に空白で区切って「strmiids.lib」を追加します。
※私が確認した時点では Release 構成では strmiids.lib が含まれており、Debug 構成では含まれていなかったため、追加しています。すでに含まれていれば変更は必要ありません。

※上記FTGLのインストール時に、ftgl_dll のみをビルドし、ftgl_static をビルドしていない場合は、ここの「追加の依存ファイル」に ftgl_static 由来のlibファイルがあるとARDeskTopのビルドに失敗する可能性があります。その場合は「Debug」構成に「ftgl_static_D.lib」、「Release」構成に「ftgl_static.lib」があればそれを削除しておきましょう。


さて、これで基本的な設定は完了でビルド可能となっているのですが、現状で ARDeskTop のビルドを実行すると、dxtrans.h が見つからないというエラーが発生します。
どうやらDirectShow関連のヘッダファイルが、Windows SDKのバージョンアップとともに消失しているらしい・・・なんということでしょう。
Windows SDKのヘッダを書き換えることでコンパイルエラーを回避します。

VC2008のインストールにより、(標準では)以下のフォルダにヘッダファイルがインストールされています。
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include

その中の「qedit.h」を開き、498行目にある「#include "dxtrans.h"」をコメントアウトし、代わりにいくつかのdefine定義を追加します。実際には、その1行が以下のように変更されます。

//#include "dxtrans.h"
#define __IDxtCompositor_INTERFACE_DEFINED__
#define __IDxtAlphaSetter_INTERFACE_DEFINED__
#define __IDxtJpeg_INTERFACE_DEFINED__
#define __IDxtKey_INTERFACE_DEFINED__

参考:http://social.msdn.microsoft.com/forums/en-US/windowssdk/thread/ed097d2c-3d68-4f48-8448-277eaaf68252/

これでビルドが通るようになったので、メニューの [ビルド]→[バッチビルド] で以下の2つの構成を両方ともチェックして一括ビルド。
  • ARDeskTop Debug
  • ARDeskTop Release

これで「D:\develop\ARDeskTop\Build」フォルダに以下の2つの実行ファイルができました。
  • ARDeskTop.exe  (リリース版実行ファイル)
  • ARDeskTopd.exe (デバッグ版実行ファイル)


実際に実行してみる

プログラムを実行するには、使用しているライブラリのDLLがEXEと同じフォルダにある必要があります。
以下のファイルをexeと同じフォルダ「D:\develop\ARDeskTop\Build」にコピーします。
  • D:\develop\ftgl-2.1.3~rc5\msvc\build\ftgl.dll
  • D:\develop\ftgl-2.1.3~rc5\msvc\build\ftgl_D.dll
  • D:\develop\ARToolKit\bin\libARvideo.dll
  • D:\develop\ARToolKit\bin\libARvideod.dll
  • D:\develop\ARToolKit\bin\DSVL.dll
  • D:\develop\ARToolKit\bin\DSVLd.dll
  • D:\develop\ARToolKit\bin\glut32.dll

さて、これで実際にARDeskTopを実行しようとしたところ、うまくいかない事態が発生。
  • Debug版をVCからデバッグ実行 → 「MSVCP71D.dll が見つからない」エラー
  • Debug版をエクスプローラから直接実行 →  「MSVCP71D.dll が見つからない」エラー
  • Release版をVCからデバッグ実行 → 未処理例外エラー
  • Release版をエクスプローラから直接実行 → うまく実行されたっぽいけど終了時に未処理例外

調べてみたところ、「MSVCP71D.dll が見つからない」というエラーが出る問題は、Debug版ARToolKit(より正確には DSVLd.dll か)で使用されているDebug用C/C++ライブラリがVC2003用のもので、VC2008環境に存在しないのが原因っぽい。
ということで、ARToolKit をVC2008環境で再ビルドして対処。

Release版のVCデバッグ実行時のエラーは、プログラム起動時の作業フォルダ(カレントディレクトリ)の問題。
プログラムで使用している「Data」フォルダ内のデータが見つからず、その時のエラー処理がうまくいっていなくて発生しているようでした。

ということで、それぞれ以下のように対処。


ARToolKit のビルド

上記問題の解決のため、Debug構成時でも DSVLd.dll でなく DSVL.dll が使われるように修正します。
(ホントはDSVLからVC2008環境でビルドすればいいんだろうけど、ATL関連クラスか何かを使っているのか、Express EditionではDSVLをビルドできないっぽい?)

以下のARToolKitのソリューションファイルを開きます(ここでも変換ウィザードが実行される)。
D:\develop\ARToolKit\ARToolKit.sln

ソリューションエクスプローラに表示されている多数のプロジェクトの中から「libARvideo」を右クリックし、プロパティを表示します。
左上の「構成」を「Debug」(または「アクティブ(Debug)」)に変更して、 [構成プロパティ]→[リンカ]→[入力] を選択し、「追加の依存ファイル」に含まれている「DSVLd.lib」を「DSVL.lib」に変更して、[OK] ボタンを押します。
その後、DebugおよびRelease構成の両方をビルドします。

ただ、ARToolKit ソリューションのプロジェクト間の依存関係が間違っているのか、全体をリビルドしようとするとうまくいかないことがあるようでした。
特に、マルチコア・マルチプロセッサPCで自動的に行われる並列ビルドでは、必要な .lib ファイルガ見つからないエラーが顕著に発生する模様。
暫定的な対応策として「エラーが発生しなくなるまでソリューションのビルドを繰り返す」という手段を使います。
  1. ソリューション構成をDebugに選択
  2. [ビルド]→[ソリューションのクリーン] を1度だけ実行
  3. [ビルド]→[ソリューションのビルド] を全部成功するまで繰り返す
  4. ソリューション構成をReleaseに選択して、上記2と3を実行
7/26修正 単に私の環境でいつの間にかソースファイルがプロジェクト間で移動されていたために、おかしい状態になっていただけのようです。実際にはちゃんとビルドすることができます。

これでビルドは完了。
ビルド完了後に以下のファイルを「D:\develop\ARDeskTop\Build」フォルダにコピーするのを忘れないように。
  • D:\develop\ARToolKit\bin\libARvideo.dll
  • D:\develop\ARToolKit\bin\libARvideod.dll


VCからのデバッグ実行時の作業フォルダ変更

VCデバッガでの実行時のエラー対処のため、実行時の作業フォルダ(カレントディレクトリ)がEXEファイルと同じフォルダになるように変更します(変更しないと、プロジェクトファイル(ARDeskTop.vcproj)がある「D:\develop\ARDeskTop\ARDeskTop」フォルダが作業フォルダに選ばれる)。

ARDeskTopプロジェクトのプロパティ(ソリューションエクスプローラの「ARDesktop」右クリック→[プロパティ])を開いて左上の構成を「すべての構成」に設定し、 [構成プロパティ]→[デバッグ] を選択して、「作業ディレクトリ」に以下のようにexeのあるフォルダを入力します。
D:\develop\ARDeskTop\Build

これでVCからのデバッグ実行でも動かすことができるようになりました。


実際に動かしてみましたが、なかなか良く動いているようです。
終了時になぜか未処理例外エラーで落ちますが(少し前にダウンロードしたものなので、最新のものでは直っているかも?)。

拍手

PR

コメント


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


トラックバック
この記事にトラックバックする:


忍者ブログ [PR]
プロフィール
HN:
はむぱい
職業:
ソフト作ったりしてる人
Twitter
最新CM
[06/09 replica rolex oyster perpetual datejust]
[06/09 bracelets imitation cartier love]
[06/09 replica the oyster perpetual datejust]
[06/09 datejust rolex oyster perpetual]
[06/09 replica gold love bangle]
カレンダー
11 2017/12 01
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
ブログ内検索
あ~いい漢字