・WinXP
・VisualStudio 2005 professional
・DirectX9 February 2006
・Win32 C/C++
VisualStudio 2005 pro で、DirectX9(February)のコンパイルが通りません・・・。
ためしに、DirectX SDKの中にあるサンプルソースをコンパイルを試みました。
コンパイル対象のサンプルは下記のディレクトリにあった AntiAlias_2005.sln です。
C:\DirectX SDK\Version9 February 2006\Samples\C++\Direct3D\AntiAlias
AntiAlias_2005.sln を開くとVC2005が起動します。
[ツール]→[オプション]→[プロジェクトおよびソリューション]→[ディレクトリを表示
するプ
ロジェクト]→[インクルードファイル]を選択。
C:\DirectX SDK\Version9 February 2006\Include を一番上に追加。
同じように[ライブラリファイル]を選択し、
C:\DirectX SDK\Version9 February 2006\Lib を一番上に追加。
次にプロジェクトのプロパティを開き、
[リンカ]→[入力]→[追加の依存ファイル]のところに、
dxerr.lib dxguid.lib d3dx9d.lib d3d9.lib winmm.lib comctl32.lib が記入されてい
ること
を確認。
[全般]→[文字セット] を [設定なし]にセット。
これで準備はOKだと思うのですが、いざコンパイルすると下記のエラーがでます・・・。
------ ビルド開始: プロジェクト: AntiAlias, 構成: Debug Win32 ------
コンパイルしています...
dxstdafx.cpp
c:\directx sdk\version9 february 2006\include\d3d9types.h(1385) : warning
C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。
データの損失を防ぐために、ファイルを Unicode 形式で保存してください。
c:\program files\microsoft visual studio 8\vc\platformsdk\include\mmreg.h :
warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んで
います。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。
c:\directx sdk\version9 february 2006\samples\c++\common\dxut.h(11) : fatal
error C1189: #error : DXUT requires a Unicode build. See the nearby comments
for details
ビルドログは file://c:\DirectX SDK\Version9 February 2006
\Samples\C++\Direct3D\AntiAlias\Debug\BuildLog.htm に保存されました。
AntiAlias - エラー 1、警告 2
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========
そこで、[全般]→[文字セット] を [Unicode 文字セットを使用する]にセットしなおし
て、コンパイル。
すると今度は下記のようなエラーがでます。
------ ビルド開始: プロジェクト: AntiAlias, 構成: Debug Win32 ------
コンパイルしています...
dxstdafx.cpp
c:\directx sdk\version9 february 2006\include\d3d9types.h(1385) : warning
C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。
データの損失を防ぐために、ファイルを Unicode 形式で保存してください。
c:\program files\microsoft visual studio 8\vc\platformsdk\include\mmreg.h :
warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んで
います。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。
コンパイルしています...
スキップ中... (関連する変更は検出されませんでした)
DXUT.cpp
DXUTenum.cpp
DXUTgui.cpp
DXUTMesh.cpp
DXUTmisc.cpp
DXUTRes.cpp
DXUTSettingsDlg.cpp
AntiAlias.cpp
リソースをコンパイルしています...
リンクしています...
LINK : fatal error LNK1104: ファイル 'dxerr.lib' を開くことができません。
ビルドログは file://c:\DirectX SDK\Version9 February 2006
\Samples\C++\Direct3D\AntiAlias\Debug\BuildLog.htm に保存されました。
AntiAlias - エラー 1、警告 2
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========
dxerr.lib が開けないといわれてしまいます。
他のサンプルソースを試しても、[リンカ]→[入力]→[追加の依存ファイル]に並んでいる
最初のlibファイルが無いといわれます。
サンプルソースを素直にコンパイルしているつもりなのですが、
エラーのみならず、警告が2つもでるのも納得行きませぬ・・・。
何か大事なことを見落としているのでしょうか。
どうもVC2005にしてから、色々とうまくいかないような・・・。
アドバイス宜しくお願いいたします。
ライブラリのパスが完全ではないようです。
Libの後に\x86をつければいけるはず。
(フォルダを確認してください)
シロートさま どうもありがとうございました。(TT)
まさしくその通りでした!
簡単なことで、とてもお恥ずかしいです・・・。
また、下記の警告については自己解決できました。
c:\directx sdk\version9 february 2006\include\d3d9types.h(1385) : warning
C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。
データの損失を防ぐために、ファイルを Unicode 形式で保存してください。
c:\program files\microsoft visual studio 8\vc\platformsdk\include\mmreg.h :
warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んで
います。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。
【解決策】
mmreg.h
267行 : #define MM_EES 219 /* EES Technik f?r Musik GmbH*/
d3d9types.h
1815行 or 1802行: DWORD Pattern; /* bit pattern, return value must be FOUR_CC
(‘C’, ‘A’, ‘C’, ‘H’) */
上の2つのファイルの、それぞれの行に、Unicode文字が含まれて居たのが原因でした。
上のようにUnicode文字を普通の英数字に書き換えたら警告は消えました。
補足ですが、VS2005から Unicode 対応がデフォルトになっているので、
プロジェクトのプロパティ→全般→文字セットを「設定なし」にすれば
2003までと同じくコンパイルできます。
あくまで、Unicodeにこだわらない方用ですが..