質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

解決済

LoadSoundMemがエラー戻り値-1を返す原因が分からない

fkcz_yfm_carp
fkcz_yfm_carp

総合スコア4

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

2回答

0評価

1クリップ

776閲覧

投稿2021/05/31 11:52

前提・実現したいこと

Visual Studio上でDXライブラリを使用してゲームを作っています。
BGM以外の枠組みは完成しており最後に画面ごと(タイトル画面、ゲーム画面、リザルト画面etc)に異なるBGMを流そうとしています。

発生している問題・エラーメッセージ

エラーメッセージは出ることなくプログラムは動きますがPlaySoundMemがBGMを流しません。
LoadSoundMemでmp3ファイルを読み込みHandle_bgmに代入しています(Handle_bgm_aは複数のファイルを読み込む為に作成しておりファイルを増やすごとにbgm_b, c, d...と作成します)がDrawFormatStringで戻り値を確認したところ-1(エラー)を返していました。

以下はDXライブラリ置き場リファレンスページ(https://dxlib.xsrv.jp/function/dxfunc_sound.html)より抜粋

宣言 int LoadSoundMem( char *FileName ) ;

概略 音ファイルをメモリに読みこむ

引数 FileName : メモリに読みこむ音ファイルのファイル名
文字列のポインタ
戻り値 -1:エラー
-1以外:サウンドハンドル

該当のソースコード

C++

//Main.cpp #include "DxLib.h" #include "Main.h" #include "Sound.h" extern int Handle_bgm; char Key[256]; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { if (ChangeWindowMode(TRUE) != 0) { return 0; } if (DxLib_Init() != 0) { return 0; } if (SetDrawScreen(DX_SCREEN_BACK) != 0) { return 0; } if (SetBackgroundColor(0, 0, 0) != 0) { return 0; } PlaySoundMem(Handle_bgm, DX_PLAYTYPE_LOOP); while (1) { if (ScreenFlip() != 0) { break; } if (ProcessMessage() != 0) { break; } if (ClearDrawScreen() != 0) { break; } if (GetHitKeyStateAll(Key) != 0) { break; } Sound(); } DxLib_End(); return 0; } //-------------------------------------------------- //Main.h #ifndef DEF_MAIN_H #define DEF_MAIN_H int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow); #endif //-------------------------------------------------- //Sound.cpp #include "DxLib.h" #include "Main.h" #include "Sound.h" int Handle_bgm_a = LoadSoundMem("./Audio/testsound_a.mp3"); int Handle_bgm = Handle_bgm_a; void Sound() { DrawFormatString(200, 300, GetColor(255, 255, 255), "BGM : %d", Handle_bgm); } //-------------------------------------------------- //Sound.h #ifndef DEF_SOUND_H #define DEF_SOUND_H void Sound(); #endif

試したこと

BGMと関係ないゲーム部分のコードを削りながら上記コードのようになるまで解決方法を模索しましたが状況の改善は全くありませんでした。

補足情報(FW/ツールのバージョンなど)

Microsoft Visual C++ 2019
DXライブラリ Windows版 Visual C++用 Ver3.22c

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

yumetodo

2021/05/31 13:25

実はDxLibではmp3を確実に再生できる保証はありません。opusに変換して試してみてください。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。