VC++ wav ファイルの再生

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Hituji
記事: 9
登録日時: 11年前

VC++ wav ファイルの再生

#1

投稿記事 by Hituji » 10年前

こんばんは,C++を始めたばかりの者です.

wavファイルの再生を行いたいと思い,調べてコードを作成したのですがエラーが発生します.
エラー内容は
・”const char*”の引数は型”LPCWSTR”のパラメーターと互換性がありません
と表示されます.

以下にソースコードを示します.

#pragma comment(lib,"winmm.lib")
#include <Windows.h>
#include <stdio.h>
#include <mmsystem.h>

int main()
{
PlaySound("test.wav",NULL,SND_ASYNC); /*test.wavを再生*/

// PlaySound(NULL, NULL, NULL);

return 0;
}


ご指導よろしくお願いします.

Blue

Re: VC++ wav ファイルの再生

#2

投稿記事 by Blue » 10年前

たぶんVisual Studioだと思いますが、コンパイルオプションの文字オプションが「Unicode文字セットを使用する」となっていると、
PlaySound関数の第1引数は、LPCWSTR(≒const wchar_t*)型を要求します。

単に、「"test.wav"」とするとLPCSTR(≒const char*)型になるので、型が一致しないというエラーになるわけです。

回避方法としては、TEXTマクロ(もしくは_Tマクロ)を使用するか、
L"test.wav"」と明示的にUnicode文字列のリテラルであると指定するかどちらかにします。

TEXTマクロを使うほうがベターだと思います。

コード:

PlaySound(TEXT("test.wav"),NULL,SND_ASYNC);

Hituji
記事: 9
登録日時: 11年前

Re: VC++ wav ファイルの再生

#3

投稿記事 by Hituji » 10年前

>Blueさん


「L"〇〇〇〇"」と入力しているものを見たことがあったのですが,そういうことなのですね.
TEXTマクロを使ったところ,プログラム実行できました.
ありがとうございます.

Hituji
記事: 9
登録日時: 11年前

Re: VC++ wav ファイルの再生

#4

投稿記事 by Hituji » 10年前

追加の問題なのですが,wavファイルの再生が実行されません.
プロジェクトファイルのあるフォルダにwavファイルを入れています.

原因のわかる方がいらっしゃいましたらご指導よろしくお願いします.

Hituji
記事: 9
登録日時: 11年前

Re: VC++ wav ファイルの再生

#5

投稿記事 by Hituji » 10年前

度々連絡を入れてしまい申し訳ありません.

PlaySound関数の同期・非同期の問題でした.再生をすぐに打ち切られていた,という認識をしています.
ASY_NC⇒SY_NC にしたところ解決しました.

閉鎖

“C言語何でも質問掲示板” へ戻る