2014年8月26日火曜日

COFF への変換中に障害が発生しましたというエラーへの対処法

Visual C++ においてコンパイル時に
COFF への変換中に障害が発生しました。ファイルが無効であるか、または壊れています
というエラーが発生することがあります。もし、Visual Studio2010を使っていてこのエラーが起きるのであれば、
  • Visual Studio 2010 のSP1をインストールする
ということで解決するでしょう。


2014年8月20日水曜日

C#にてDirectXのAudioVideoPlaybackを利用したサウンドの同時再生。

C#でサウンドを再生するには、通常PlaySoundクラスを利用しますが、このクラスは音声ファイルの同時再生ができません。片方がなっている状況で別のファイルを再生をすると、片方が止まって新たしく別のサウンドが再生します。ゲームなどでは不便ですね。BackgroundWorkerを利用してマルチスレッド化を行っても、1つの再生プロセスを共有しているようで、PlaySoundクラスを利用したサウンドの同時再生は実質不可能なようです。

この問題には、DirectXを利用することで解決できます。事前に下記の設定をしたうえで、サンプルのように書けばOKです。このサンプルではボタンを押すと、他方のサウンド再生に関係なく、サウンドが再生します。なお、サンプルのように毎回インスタンスを生成しないと思ったように再生されません。
  • C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0\Microsoft.DirectX.AudioVideoPlayback.dllを参照に追加
  • app.configに<startup uselegacyv2runtimeactivationpolicy="true">を追加


  • 【デバッグ】→【例外】→「【Managed Debugging Assistants】→【LoaderLock】の「スローされるとき」のチェックを解除


  • 以上の設定をした上で下記のコードのように書けばOK。

    参考サイト