DirectX9.0c用ライブラリ Luna導入メモ
- 入手したLunaのアーカイブ
- LunaDx9_SDK_35.58.exe 27-Jan-2008 15:16 8.8M
- 導入先
- Windows XP SP3
- IDE
- Microsoft Visual C++ 2005(Microsoft Visual Studio 2005 Version 8.0.50727.762)
- 事前に導入したソフト
注意
- LunaではDirectMusicを利用している.November 2007以降はこれが除去されているのでAugust 2007を導入する
- LunaではDirectShowを利用している.いつの頃からかPlatform SDKに移管された.現在はWindows SDKと名を変えているのでこれを導入する
- Windows SDKとDirectX SDKのアップデート(2008/07/12)によれば,冒頭に示したWindows SDKは最新でない
- 最新版は英語ページのみで公開されている
面倒なので最新版は入れないままにする今回導入したものはv6.0で,最新版はv6.1となっている
- 現況にて記述しているが,最新版を入れた.冒頭のリンク修正は面倒なのでしていない
- ちなみに,Windows SDKとDirectX SDKのアップデート(2008/07/12)で示されているDirectShowのパス設定など諸々を一切行っていない.問題が発生したら再考する
- Luna運用前にluna.hを編集する必要がある
- 現況にて述べているとおり,luna.h第62行を次のように書き換える.数値に付けられている括弧を取り去るのみ
#define _WIN32_WINNT 0x0400
Visual Studioのパス設定
Luna
lib, includeをセットする.
現況(上部が新しい)
ins datetime="2008-08-19T17:08:13+09:00"
「luna __amsg_exit」で検索すると静的変数を使用してFPSを表示する。についてが引っかかった.なるほどVisual Studio 2005での設定方法で触れられてはいたが,違いが分からなかったので放置していた設定だ.該当箇所を,Debugでは/MTd,Releaseでは/MTとした.ビルドに成功した.デバッグビルド・実行,リリースビルド・実行のいずれも達成した.
del datetime="2008-08-19T17:05:01+09:00"
luna.h第62行で_WIN32_WINNTを(0x0400)と定義していた.これの括弧を取り去ると,変化が現れた.
1>------ ビルド開始: プロジェクト: [01]test, 構成: Debug Win32 ------ 1>コンパイルしています... 1>main.cpp 1>リンクしています... 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __amsg_exit は既に MSVCRTD.lib(MSVCR80D.dll) で定義されています。 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __initterm_e は既に MSVCRTD.lib(MSVCR80D.dll) で定義されています。 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: _exit は既に MSVCRTD.lib(MSVCR80D.dll) で定義されています。 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __exit は既に MSVCRTD.lib(MSVCR80D.dll) で定義されています。 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __cexit は既に MSVCRTD.lib(MSVCR80D.dll) で定義されています。 1>LIBCMT.lib(invarg.obj) : error LNK2005: __invoke_watson は既に MSVCRTD.lib(MSVCR80D.dll) で定義されています。 1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_a は既に MSVCRTD.lib(cinitexe.obj) で定義されています。 1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_z は既に MSVCRTD.lib(cinitexe.obj) で定義されています。 1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_a は既に MSVCRTD.lib(cinitexe.obj) で定義されています。 1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_z は既に MSVCRTD.lib(cinitexe.obj) で定義されています。 1>LIBCMT.lib(tidtable.obj) : error LNK2005: __encode_pointer は既に MSVCRTD.lib(MSVCR80D.dll) で定義されています。 1>LIBCMT.lib(tidtable.obj) : error LNK2005: __decode_pointer は既に MSVCRTD.lib(MSVCR80D.dll) で定義されています。 1>LIBCMT.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) は既に MSVCRTD.lib(MSVCR80D.dll) で定義されています。 1>LIBCMT.lib(winxfltr.obj) : error LNK2005: __XcptFilter は既に MSVCRTD.lib(MSVCR80D.dll) で定義されています。 1>LIBCMT.lib(setlocal.obj) : error LNK2005: __configthreadlocale は既に MSVCRTD.lib(MSVCR80D.dll) で定義されています。 1>LIBCMT.lib(errmode.obj) : error LNK2005: ___set_app_type は既に MSVCRTD.lib(MSVCR80D.dll) で定義されています。 1>LIBCMT.lib(mlock.obj) : error LNK2005: __unlock は既に MSVCRTD.lib(MSVCR80D.dll) で定義されています。 1>LIBCMT.lib(mlock.obj) : error LNK2005: __lock は既に MSVCRTD.lib(MSVCR80D.dll) で定義されています。 1>LINK : warning LNK4098: defaultlib 'MSVCRTD' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 1>LINK : warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 1>(中略)\My Documents\Visual Studio 2005\Projects\Luna\[01]test\Debug\[01]test.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。 1>ビルドログは "file://(中略)\My Documents\Visual Studio 2005\Projects\Luna\[01]test\Debug\BuildLog.htm" に保存されました。 1>[01]test - エラー 19、警告 2 ========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========
del datetime="2008-08-19T16:55:46+09:00"
_WIN32_WINNTというマクロがluna.hとobjbase.hとで多重定義されている.___LUNA_DX9___マクロを利用して,objbase.hを次のように編集してみた.
#ifndef ___LUNA_DX9___ #if(NTDDI_VERSION >= NTDDI_VISTA && !defined(_WIN32_WINNT)) #define _WIN32_WINNT 0x0600 #endif #if(NTDDI_VERSION >= NTDDI_WS03 && !defined(_WIN32_WINNT)) #define _WIN32_WINNT 0x0502 #endif #if(NTDDI_VERSION >= NTDDI_WINXP && !defined(_WIN32_WINNT)) #define _WIN32_WINNT 0x0501 #endif #if(NTDDI_VERSION >= NTDDI_WIN2K && !defined(_WIN32_WINNT)) #define _WIN32_WINNT 0x0500 #endif #endif // #ifndef ___LUNA_DX9___
事態は変わらなかったので,元に戻した.
del datetime="2008-08-19T16:50:41+09:00"
Lunaを使おう! - SDKのインストールを参照し,October 2004の導入を視野に入れた.
del datetime="2008-08-19T16:44:02+09:00"
先と同様の事態になった.違いは第235行に変化したことのみ.
del datetime="2008-08-19T16:30:25+09:00"
事態が進展しないので,いっそWindows SDKは最新版を入れることにした.ファイルサイズはv6.0と同等で,15分あまりでダウンロードが完了した.インストーラは英語だった.