ぼく用あれこれまとめ

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")
  • これでおっけー。
  • どういう因果関係があるのか、ぼくもまだよくわかりませんがこれで大丈夫なはず…。
記事メニュー
目安箱バナー