###前提・実現したいこと
DirectSoundをC#上で扱うために
処理をまとめてDLLとして吐き出しました。
そのDLLをC#側でDllImportを行って利用しようとしています。
###発生している問題・エラーメッセージ
セカンダリバッファを生成する処理中の
IDirectSoundBufferからIDirectSoundBuffer8に変換するときに
QueryInterfaceメソッド利用するのですが、このときに
型 'System.AccessViolationException' のハンドルされていない例外が ○○ で発生しました 追加情報:保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。
という例外が発生します。
###該当のソースコード
C++
1DSBUFFERDESC DSBufferDesc; 2IDirectSoundBuffer *ptmpBuf = 0; 3IDirectSoundBuffer8 *pDSBuffer; 4pDS8->CreateSoundBuffer( &DSBufferDesc, &ptmpBuf, NULL ); 5 6// ここで例外が発生する 7ptmpBuf->QueryInterface( IID_IDirectSoundBuffer8 ,(void**)&pDSBuffer ); 8 9ptmpBuf->Release();
###試したこと
DLLを吐いてC#のDllImportで利用するのでなく、
普通にC++のプロジェクトで同じコードを利用して書いたところ
普通に動作しました。
###補足情報(言語/FW/ツール等のバージョンなど)
ここを参考に勉強しました。
回答1件
あなたの回答
tips
プレビュー