C++の型について
Posted: 2019年5月12日(日) 23:57
はじめまして
現在Direc2DとXAudio2で簡単なゲームを作成しようとしているのですが、XAUDIO2の実装で音が鳴らず困っています。ファイルのオープンにはmmioを使っております。
色々質問があるのですが今回はオーディオデータをmmioOpenで開く際に発生したエラーについてお聞きしたいです。
公式のリファレンス等を見ても
TCHAR * strFileName = _TEXT("media\\MusicMono.wav");
や
wchar_t* file = L"test.wav";
などで変数を作成しています。
しかし、これだと
”型const wchar_tの値を使用して型TCHARのエンティティを初期化できません”
というエラーが出てくるのでconst TCHAR* strFileNameのようにする必要があります。
これを実引数として他ファイルで定義したBOOL CreateSoundBuffer(TCHAR* filepath){~}に渡すために
WinMain関数内でCreateSoundBuffer(strFileName)とすると
”型const TCHAR*の引数は型TCHARのパラメーターと互換性がありません”
というエラーが出ます。
こういった公式のリファレンスのプログラムでも通らないというのは仕様が変わってより厳格になったからなのでしょうか?
私の対処法としては
TCHAR waveFile[] = _TEXT("A.wav");
CreateSoundBuffer(waveFile);
BOOL CreateSoundBuffer(TCHAR* filepath){~};
mmio = mmioOpen(filepath, &mmioInfo, MMIO_READ);
という形にしてます。
環境はVisual Studio 2017です
よろしくお願いいたします。
現在Direc2DとXAudio2で簡単なゲームを作成しようとしているのですが、XAUDIO2の実装で音が鳴らず困っています。ファイルのオープンにはmmioを使っております。
色々質問があるのですが今回はオーディオデータをmmioOpenで開く際に発生したエラーについてお聞きしたいです。
公式のリファレンス等を見ても
TCHAR * strFileName = _TEXT("media\\MusicMono.wav");
や
wchar_t* file = L"test.wav";
などで変数を作成しています。
しかし、これだと
”型const wchar_tの値を使用して型TCHARのエンティティを初期化できません”
というエラーが出てくるのでconst TCHAR* strFileNameのようにする必要があります。
これを実引数として他ファイルで定義したBOOL CreateSoundBuffer(TCHAR* filepath){~}に渡すために
WinMain関数内でCreateSoundBuffer(strFileName)とすると
”型const TCHAR*の引数は型TCHARのパラメーターと互換性がありません”
というエラーが出ます。
こういった公式のリファレンスのプログラムでも通らないというのは仕様が変わってより厳格になったからなのでしょうか?
私の対処法としては
TCHAR waveFile[] = _TEXT("A.wav");
CreateSoundBuffer(waveFile);
BOOL CreateSoundBuffer(TCHAR* filepath){~};
mmio = mmioOpen(filepath, &mmioInfo, MMIO_READ);
という形にしてます。
環境はVisual Studio 2017です
よろしくお願いいたします。