DirectX 9 SDK で作成しています
DirectDraw, DirectInput はうまくできたのですが
DirectSoundを追加するとコンパイルエラーがおきてしまいます
#include "xx" の関係と思うのですが、何がいけないのかがわかりません
DirectX9 SDK sample に付属している DxUTsound.cpp DXUTsound.h を再利用しようと
しているのですが、これをプロジェクトに追加すると以下のエラーがでます
C:\PROGRAM FILES\MICROSOFT DIRECTX 9.0 SDK (SUMMER 2004)\INCLUDE\dsound.h(305) : error C2146: 構文エラー : ';' が、識別子 'dwReserved1' の前に必要です。
C:\PROGRAM FILES\MICROSOFT DIRECTX 9.0 SDK (SUMMER 2004)\INCLUDE\dsound.h(305) : error C2501: 'DWORD_PTR' : 識別名を宣言するのに、型が指定されていません。
C:\PROGRAM FILES\MICROSOFT DIRECTX 9.0 SDK (SUMMER 2004)\INCLUDE\dsound.h(305) : error C2501: 'dwReserved1' : 識別名を宣言するのに、型が指定されていません。
C:\PROGRAM FILES\MICROSOFT DIRECTX 9.0 SDK (SUMMER 2004)\INCLUDE\dsound.h(306) : error C2146: 構文エラー : ';' が、識別子 'dwReserved2' の前に必要です。
C:\PROGRAM FILES\MICROSOFT DIRECTX 9.0 SDK (SUMMER 2004)\INCLUDE\dsound.h(306) : error C2501: 'DWORD_PTR' : 識別名を宣言するのに、型が指定されていません。
C:\PROGRAM FILES\MICROSOFT DIRECTX 9.0 SDK (SUMMER 2004)\INCLUDE\dsound.h(306) : error C2501: 'dwReserved2' : 識別名を宣言するのに、型が指定されていません。
DXUTsound.cpp
NOTE: WINVER has been defined as 0x0500 or greater which enables
Windows NT 5.0 and Windows 98 features. When these headers were released,
Windows NT 5.0 beta 1 and Windows 98 beta 2.1 were the current versions.
For this release when WINVER is defined as 0x0500 or greater, you can only
build beta or test applications. To build a retail application,
set WINVER to 0x0400 or visit http://www.microsoft.com/msdn/sdk
to see if retail Windows NT 5.0 or Windows 98 headers are available.
See the SDK release notes for more information.
C:\PROGRAM FILES\MICROSOFT DIRECTX 9.0 SDK (SUMMER 2004)\INCLUDE\dsound.h(305) : error C2146: 構文エラー : ';' が、識別子 'dwReserved1' の前に必要です。
C:\PROGRAM FILES\MICROSOFT DIRECTX 9.0 SDK (SUMMER 2004)\INCLUDE\dsound.h(305) : error C2501: 'DWORD_PTR' : 識別名を宣言するのに、型が指定されていません。
C:\PROGRAM FILES\MICROSOFT DIRECTX 9.0 SDK (SUMMER 2004)\INCLUDE\dsound.h(305) : error C2501: 'dwReserved1' : 識別名を宣言するのに、型が指定されていません。
C:\PROGRAM FILES\MICROSOFT DIRECTX 9.0 SDK (SUMMER 2004)\INCLUDE\dsound.h(306) : error C2146: 構文エラー : ';' が、識別子 'dwReserved2' の前に必要です。
C:\PROGRAM FILES\MICROSOFT DIRECTX 9.0 SDK (SUMMER 2004)\INCLUDE\dsound.h(306) : error C2501: 'DWORD_PTR' : 識別名を宣言するのに、型が指定されていません。
C:\PROGRAM FILES\MICROSOFT DIRECTX 9.0 SDK (SUMMER 2004)\INCLUDE\dsound.h(306) : error C2501: 'dwReserved2' : 識別名を宣言するのに、型が指定されていません。
C:\Documents and Settings\ーーーーーーーーーO6X1\デスクトップ\dll\DXUT.h(13) : fatal error C1189: #error : "The sample framework requires a Unicode build. If you are using Microsoft Visual C++ .NET, under the General tab of the project properties ch
ange the Character Set to 'Use Unicode Character Set'."
cl.exe の実行エラー
どのように対処すればいいでしょうか?
DirectSound関係でコンパイルエラーになってしまいます
Re: DirectSound関係でコンパイルエラーになってしまいます
こんにちは。
DxUTsound.cpp DXUTsound.hをプロジェクトに追加したとのことですが、
これらのファイルは、ソースを見る限りDirectSundを扱うためのものではありません。
プロジェクトから外してください。
記述するファイルは新規でとりあえずcppでも良いので作成してください。
例えサンプルがあってもそのままプロジェクトに追加することは
避けたほうが良いです。
まずダイレクトサウンドを扱うには、
#include <Dsound.h>
#pragma comment(lib, "dsound.lib")
最低限この二つが必要です。
そしてダイレクトサウンドを扱うコードを書かなければなりません。
あとは、掲示板で説明するとやたらと長くなり、そして意味不明になると思うので、
ここでは割愛します。すいません。
DxUTsound.cpp DXUTsound.hをプロジェクトに追加したとのことですが、
これらのファイルは、ソースを見る限りDirectSundを扱うためのものではありません。
プロジェクトから外してください。
記述するファイルは新規でとりあえずcppでも良いので作成してください。
例えサンプルがあってもそのままプロジェクトに追加することは
避けたほうが良いです。
まずダイレクトサウンドを扱うには、
#include <Dsound.h>
#pragma comment(lib, "dsound.lib")
最低限この二つが必要です。
そしてダイレクトサウンドを扱うコードを書かなければなりません。
あとは、掲示板で説明するとやたらと長くなり、そして意味不明になると思うので、
ここでは割愛します。すいません。
Re: DirectSound関係でコンパイルエラーになってしまいます
>>海Sea さん
>>ソースを見る限りDirectSundを扱うためのものではありません。
ここがちょっとよくわからないのですが
補足でどこがエラー箇所になっているかというと
SDK内のinclude\\dsound.h の途中のところでコンパイルエラーになっています
下の DWROD_PTR が未定義の状態になっているようです
内部のコンパイル関係なので手が出ない状態です
dsound.h 内
>>ソースを見る限りDirectSundを扱うためのものではありません。
ここがちょっとよくわからないのですが
補足でどこがエラー箇所になっているかというと
SDK内のinclude\\dsound.h の途中のところでコンパイルエラーになっています
下の DWROD_PTR が未定義の状態になっているようです
内部のコンパイル関係なので手が出ない状態です
dsound.h 内
#if DIRECTSOUND_VERSION >= 0x0800
typedef struct _DSEFFECTDESC
{
DWORD dwSize;
DWORD dwFlags;
GUID guidDSFXClass;
DWORD_PTR dwReserved1;
DWORD_PTR dwReserved2;
} DSEFFECTDESC, *LPDSEFFECTDESC;
typedef const DSEFFECTDESC *LPCDSEFFECTDESC;
#define DSFX_LOCHARDWARE 0x00000001
#define DSFX_LOCSOFTWARE 0x00000002
Re: DirectSound関係でコンパイルエラーになってしまいます
ちょっと気になってたのでソースを見てたんですが、
こちらの勘違いだったようです。申し訳ありません。
どうやらこれはDirecxのバージョン違いを確認する記述もたくさん
含まれているのかなと思われます。
問題の DWORD_PTRなんですが
これはWinAPIに関する型ですよね。
DWORD_PTRが検索してどのソースにも定義されていないのであれば
自分でその型を定義するか、platformsdkをインストールしないと駄目みたいです。
plfatformsdkに関してはよく知らないので何とも言えません。
ちなみに自分で型を作成することは
http://ameblo.jp/ganbaru-engineer/theme ... 98085.html
こちらでやっている方がいました。
ただし情報源がとても古いです。
私はこのエラーが出なかったのですが、こういうエラーもあるんですね。
こちらの勘違いだったようです。申し訳ありません。
どうやらこれはDirecxのバージョン違いを確認する記述もたくさん
含まれているのかなと思われます。
問題の DWORD_PTRなんですが
これはWinAPIに関する型ですよね。
DWORD_PTRが検索してどのソースにも定義されていないのであれば
自分でその型を定義するか、platformsdkをインストールしないと駄目みたいです。
plfatformsdkに関してはよく知らないので何とも言えません。
ちなみに自分で型を作成することは
http://ameblo.jp/ganbaru-engineer/theme ... 98085.html
こちらでやっている方がいました。
ただし情報源がとても古いです。
私はこのエラーが出なかったのですが、こういうエラーもあるんですね。
Re: DirectSound関係でコンパイルエラーになってしまいます
とやってみたところ別のところでコンパイルエラーがでました
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\float.h(29) : error C2144: 構文エラー : ';' が型 'int' の前に必要です。
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\float.h(29) : fatal error C1004: 予期せぬ EOF が検出されました。 なおかつ前の未定義状態になっているようです
これは・・・dllを2個作ったほうが早いかな
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\float.h(29) : error C2144: 構文エラー : ';' が型 'int' の前に必要です。
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\float.h(29) : fatal error C1004: 予期せぬ EOF が検出されました。 なおかつ前の未定義状態になっているようです
これは・・・dllを2個作ったほうが早いかな
Re: DirectSound関係でコンパイルエラーになってしまいます
VC6なんですね。
#define DWORD_PTR DWORD
じゃないといけないのではないでしょうか。
それでダメなら
#define DIRECTSOUND_VERSION 0x0700
としてDirectSound 7以前の機能だけで我慢するしかないでしょう。
VC6の頃はそれしか無かったわけですし。
#define DWORD_PTR DWORD
じゃないといけないのではないでしょうか。
それでダメなら
#define DIRECTSOUND_VERSION 0x0700
としてDirectSound 7以前の機能だけで我慢するしかないでしょう。
VC6の頃はそれしか無かったわけですし。
Re: DirectSound関係でコンパイルエラーになってしまいます
エラーが出ずっぱり・・・(^^;
ちょっとこのサンプルはこれ以上私にはわかりませんね
ただ単純にDirecSoundはWaveファイルしか鳴らせないので、
サンプルがなぜこんなに複雑なのかが謎です。
ちょっとこのサンプルはこれ以上私にはわかりませんね
ただ単純にDirecSoundはWaveファイルしか鳴らせないので、
サンプルがなぜこんなに複雑なのかが謎です。
Re: DirectSound関係でコンパイルエラーになってしまいます
DXUT自体DirectXを扱うフレームワークだからでしょう、そのおかげで読みづらいんだと思います。
一番簡単な方法はincludeされているファイルを片っ端から読み込むことです。
一番簡単な方法はincludeされているファイルを片っ端から読み込むことです。
Re: DirectSound関係でコンパイルエラーになってしまいます
>>ISLeさん
#define DWORD_PTR DWORD
じゃないといけないのではないでしょうか。
それでダメなら
#define DIRECTSOUND_VERSION 0x0700
としても同じコンパイルエラーがでてしまいました
DirectX7 SDK の入手はネットではできないようで・・・
SDK5 ならCD-ROMがあるのでこちらを参照します
>>海Seaさん
そうですね
私だけの環境かもしれないですね
>>ひよこさん
読んでみて、いろいろ削ってみたのですが
もう一度見てみます
#define DWORD_PTR DWORD
じゃないといけないのではないでしょうか。
それでダメなら
#define DIRECTSOUND_VERSION 0x0700
としても同じコンパイルエラーがでてしまいました
DirectX7 SDK の入手はネットではできないようで・・・
SDK5 ならCD-ROMがあるのでこちらを参照します
>>海Seaさん
そうですね
私だけの環境かもしれないですね
>>ひよこさん
読んでみて、いろいろ削ってみたのですが
もう一度見てみます