ぼく用あれこれまとめ
DIrectSound8で出てくるエラー
最終更新:
bokuyo
-
view
DirectSound8使うときの注意点
- こんなエラーがでたら間違いなくやつが原因だ!
(microsoft directx sdk (february 2010)の場合)
dsound.h(237): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません dsound.h(237): error C2143: 構文エラー : ';' が '*' の前にありません。 dsound.h(237): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません dsound.h(356): error C2146: 構文エラー : ';' が、識別子 'lpwfxFormat' の前に必要です。 dsound.h(356): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません dsound.h(356): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません dsound.h(372): error C2146: 構文エラー : ';' が、識別子 'lpwfxFormat' の前に必要です。 dsound.h(372): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません dsound.h(372): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません dsound.h(423): error C2146: 構文エラー : ';' が、識別子 'lpwfxFormat' の前に必要です。 dsound.h(423): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません dsound.h(423): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません dsound.h(432): error C2146: 構文エラー : ';' が、識別子 'lpwfxFormat' の前に必要です。 dsound.h(432): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません dsound.h(432): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません dsound.h(702): error C2061: 構文エラー : 識別子 'LPWAVEFORMATEX' dsound.h(713): error C2061: 構文エラー : 識別子 'LPCWAVEFORMATEX' dsound.h(788): error C2061: 構文エラー : 識別子 'LPWAVEFORMATEX' dsound.h(799): error C2061: 構文エラー : 識別子 'LPCWAVEFORMATEX' dsound.h(1061): error C2061: 構文エラー : 識別子 'LPWAVEFORMATEX' dsound.h(1120): error C2061: 構文エラー : 識別子 'LPWAVEFORMATEX' mmsystem.h(792): error C2373: 'WAVEFORMATEX' : 再定義されています。異なる型修飾子です。 dsound.h(237) : 'WAVEFORMATEX' の宣言を確認してください。 mmsystem.h(795): error C2378: 'LPCWAVEFORMATEX' : 再定義されています。シンボルは typedef でオーバーロードできません dsound.h(237) : 'LPCWAVEFORMATEX' の宣言を確認してください。 mmsystem.h(837): error C2061: 構文エラー : 識別子 'LPCWAVEFORMATEX' mmsystem.h(893): error C2061: 構文エラー : 識別子 'LPCWAVEFORMATEX'
この原因は
- #include<MMSystem.h>の前に#include <dsound.h>をしてる、ところにある。
応急処置策
- <MMSystem.h>といえば、timeGetTime()関数でよくつかうよねー。
- <dsound.h>を呼び出す前に<MMSystem.h>を呼んじゃいましょう。
#ifdef WIN32 #include <MMSystem.h> #pragma comment(lib,"winmm.lib") #endif #include <dsound.h> #pragma comment(lib, "dxguid.lib") #pragma comment(lib, "dsound.lib")
- これでおっけー。
- どういう因果関係があるのか、ぼくもまだよくわかりませんがこれで大丈夫なはず…。