ページ 11

ファイル場所を変えたら音楽が流れません

Posted: 2007年10月02日(火) 15:08
by 待竜
初めまして、Cは専門ではないのですが学校の授業でちょろっとやった程度です。
新しいプロジェクトをMy Documentsの中に作りましたが、音楽を流そうとすると
リンクが上手くいきません。
「error LNK2001: 外部シンボル ""int __cdecl PlaySoundW(char const *,int)" (?PlaySoundW@@YAHPBDH@Z)" は未解決です。」「fatal error LNK1120: 外部参照 1 が未解決です。」が出てしまいます。
ゲームプログラミングの館の15節のサンプルプログラムを試しに実行しても同じエラーが出ます。
同フォルダ内にtest.wavはちゃんとあります。
なにか初歩的な勘違いをしてそうなのですがどなたか教えていただけると嬉しいです。

あと、もう一つ、wavの方はDXライブラリのサンプルプログラム実行用フォルダ内で
15節のプログラムを実行すればちゃんと音が出るのですが、midの方は出ないんです・・・
なにか設定とかあるのでしょうか?
未熟者で申し訳ありません、よろしくお願いします。

Re:ファイル場所を変えたら音楽が流れません

Posted: 2007年10月02日(火) 18:13
by 管理人
midファイルの再生が出ないのなら、普通に再生しても出ないのではないでしょうか。
WindowsMediaPlayerなどで再生してみてください。
それでも鳴らないなら音量調節が出来てないのでしょう。
コントロールパネルの「サウンドとオーディオデバイス」から「音量」の「詳細設定」を選択すると

マスタ音量 WAVA SWシンセサイザ CD音量

が調整できる画面が出てきます。
midはSWシンセサイザだと思いますので、ここがミュートになったり、音量が小さくなったりしていないか、
確認してください。

Re:ファイル場所を変えたら音楽が流れません

Posted: 2007年10月02日(火) 19:02
by GPGA
まずエラーに関していいますと、プリプロセッサに「UNICODE」が定義されてしまっているため
windows.hが呼んでいるmmsystem.h内部でdefine定義で
#ifdef UNICODE
#define PlaySound  PlaySoundW
#else
#define PlaySound  PlaySoundA
#endif // !UNICODE
 
となっているためです。


ただ、今回のエラーの直接的な原因はおそらく DxLib.hをインクルードした後に
windows.hをインクルードしているため、DxLibのPlaySoundにwindows.hのdefineが
かかってしまったと思われます。
PlaySoundは本来WinAPIの一つなので、ライブラリの中に入ってしまってはいけないものなのですが
DxLibを作った方は、そのことを知らず(?)に入れてしまったそうです。(DxLibを作った方が掲示板で失敗したと言っていました)

Re:ファイル場所を変えたら音楽が流れません

Posted: 2007年10月07日(日) 23:07
by 待竜
迅速な回答ありがとうございます。そしてお返事がおくれてすみませんでした!

midファイルですがWindowsMediaPlayerでは流れるのでマスタ音量見てみたら
見事に0に設定されていました。上げたらしっかり流れました、ありがとうございます!

他フォルダでの不具合ですが、ヘッダファイルについて色々調べてみましたが
どのように直せばよいのか分かりませんでした・・・
解決方法がありましたら詳しく教えていただけると嬉しいです。
何度もすみません。

Re:ファイル場所を変えたら音楽が流れません

Posted: 2007年10月07日(日) 23:25
by 待竜
すみません、なぜか音楽が他フォルダでも流れるようになりました。
原因は良くわからないですが、とりあえず解決したということにしようと思います。
また何かあったら相談させていただきたいと思います。
ありがとうございました。