今更ながら、ARToolKitで遊ぶ

http://www1.bbiq.jp/kougaku/ARToolKit.html

ここを参考にセットアップ

うちにあるのはVC2005だけど(上記サイトで説明があるのはVC6)、まあ、適当に変換してくれるだろう、ということでぽっちとな。

エラー 31 error LNK2019: 未解決の外部シンボル __imp__CoInitialize@4 が関数 _ar2VideoOpen で参照されました。 videoWin32DirectShow.obj

んー?
VideoWin32DirectShow\videoWin32DirectShow.cpp内のar2VideoOpen関数内で使ってるCoInitializeがないとな?

ググって見る。この関数なーに?
:
(検索中)
:
COMの何かを初期化する時に使う関数か何かかな(日本語記事が見つからん。この辺はきっと超基本なことなので、みんな気づきもせずに飛び越えていってるんだろーな、とか想像)
:
(さらに検索。。。)
:
よし、どんぴしゃな記事発見
http://www.hitlabnz.org/forum/showthread.php?t=489

Hi, I am trying to build the ARToolkit for Windows and I am encountering an error in the LibARVideo. I was wondering if anyone has any hints as to what I can do to fix this error. Any help is appreciated! Thanks, Wendy.

で、返答が

Try to comment this lines in videoWin32DirectShow.cpp:

154: //CoInitialize(NULL);

196: //coUnitialize();

ハア? まじっすか?どう見ても釣りです。ありがとうございました。


仕方がないので自分で考える((できるだけ自分で考えず、他人に頼る主義(駄目駄目)))。えーと、マニュアルはここか。日本語ないんですね。

http://msdn.microsoft.com/ja-jp/library/ms678543(en-us,VS.85).aspx

ole32.libを使え、と。PlatformSDKの中にあったよね?設定してるよね?なんで?とりあえず、リンカの設定の「追加の依存ファイル」にole32.libを入れて、強制的に見るようにしてみる。
:
なんか、そんなの無いって言われる。えー。プロジェクトおよびソリューションのVC++ディレクトリのライブラリファイルを再確認。SDK入ってるよねー。

           ___   ━┓
         / ―  \  ┏┛
        /  (●)  \ヽ ・
       /   (⌒  (●) /
       /      ̄ヽ__) /
.    /´     ___/
    |        \
    |        |

試しに、読み込み順序を変えてみる


お、コンパイルとおったー。やたー。

起動!

ダイナミックリンクライブラリ MSVCP71D.dllが指定されたパス (長いので省略 ) に見つかりませんでした。

えええええぇぇぇぇぇぇ

つーか、それ、VC2005とかに入っていない & 再配布不可のDLLじゃん!
どうすんのさ!
http://www.siwa32.com/?p=40
リンカの設定いじればよいとな?


やっぱり動かないなあ(意味もよくわからないし)。
仕方がないので、Releaseでビルド

で、カメラUSBに繋いで、サンプルプログラムを動かす。
おー。印刷面倒なんでディスプレイのマーカーを見せたら、ちゃんと表示されるねー。

しかし、Releaseでしかコンパイルできないのは不便すぎる。

http://www.atinfinity.info/blog/archives/52

ここ見ると、DSVLを再ビルドしてやればいいらしい。

やってみよう!(つーか、家のPC軽くていいなあ!VC2005二つ同時起動して、iTunesで音楽流しつつFirefoxで色んなサイト見ながら作業してもサクサクだぜ!会社のやつもこれくらい軽ければ言うことないのに!)

とりあえず、DSVLのプロジェクトファイルを開いてVS2005用に変換ー。


何、stream.hが無いだと!(さっきからこればっか・・・)

http://www.geocities.co.jp/SiliconValley/7406/tips/dshow/dshow5.html
む、これもPlatformSDKの中にあるのか。読み取るインクルードのフォルダに追加して、と、ビルドー。

今度はddraw.hが無い?

これは、DirectX SDKが必要か・・・
とりあえず最新版ダウンロード・・・約500MBか、デカイ

で、解凍して、インストール・・・「このOSは対象外です」ふざけんな!解凍する前に言え!

http://sorceryforce.com/programing/directx/base/environment.html
ここによると、Win2kで使えるDirectX SDKの最終はOctober 2004だとか。うーんそろそろXPに乗り換えるかなあ。さすがにここまで露骨に色々打ち切られると厳しいものがある。

次は・・・atlcomcli.hが見つからない!だとぅ!(眠くなってイライラしてる)
また調べてみると、昔のATLで使われていたヘッダで、今のPlatformSDKには入っていない。うーん。
ん?コードに、

#include // CComPtr

って宣言されているなあ。CComPtrはスマートポインタクラスか。こういうの、別のヘッダに移動してるだけ、とかちゃうん?
って読み当たり!。atlbase.hにいました!びるど―

よし消えたあ!次は、strmbasd.libを開くことが出来ません、ときた。

これは、どこにも無いのだが、どうすれば・・・
http://www.zatsugaku.info/index.php?Program%2Fmemo%2Fdirectshow
えー、自分でつくんなきゃだめなのかー。

仕方ないので、nmake、と。

プロシージャエントリポイントGetModuleHandleExAがダイナミックライブラリKERNEL32.dllから見つかりませんでした。

えー。また調べる。
Windows2000を使いつづけるスレ その7

msiファイルを全部インストール出来るようになったがiTUnesを起動するとGetModuleHandleExA という関数がKernel32.dllにないよとERRORになる。
GetModuleHandleExAはXP以降に追加された関数なので、これ以上はKernel32dll弄らないと無理そう。

うぇえええ。そんなん入れんな。
また調べる。
BuildingAndInstalling - The Wireshark Wiki
ここにWin2kでのnmakeの注意書きがあった。

Make sure to use nmake/cl/link from VS8 not 2003 server SDK R2, Use which to test. Otherwise XP function GetModuleHandleExA in nmake of SDK will be called to display annoying pop-up window.

ほほう、つまり、SDKのnmakeは使えないからVC付属のを使え、と。試してみると、おk、使える。

で、nmake〜
色んな***.hが無い無い言われるので、makefile開いて、/Iオプションで無いといわれたファイルがあるフォルダを片っ端から追加。リンク時にも言われるので、/LIBPATHに追加。
できた〜

次は・・・atlthunk.libが見つからない、か、終りがさっぱりみえないぜ!

とりあえず、ここに解決方法があるらしいが、今日はここまで!
http://www.ailight.jp/blog/myamyu/archive/2005/07/03/8676.aspx