Matlabのテンプレートに基づいて、私が持っていたAnsi Cファイルと通信するmdlStart
mdlOutputs
などの "main" S関数を実行しています。 Simulinkで使用されます。 mexでファイルを正しくコンパイルし、デバッグするためにVisual Studio 2015を使用しています。ブレークポイントを設定して使用することができますので、すべて正常に動作します。MatlabがmdlOutputsの後にS関数でクラッシュする
問題は、すべての内容がMatlabに正しく印刷される 'mdlOutputs'関数を終了した後、デバッグがブレークポイントに入り、 'simulink.c'に入ります。その後、「libmex.pdb」が見つからないというデバッグが壊れてしまいます。
Visual StudioなしでSimulinkモデルをループ内で実行すると、Matlabがクラッシュして動作を停止します。
それで、どこでエラーが発生しているかを正しく確認する方法はありますか?また、mdlOutputs
を終了してからmdlTerminate
に入る前に、プロセスがクラッシュする理由についての手がかりはありますか?これらの2つの機能の間ではどうなりますか?
私はWindows 7、64ビット、Matlab 2012bを使用しています(2015bで試してみます)。
このオプションは、s-functionがコード内で長いジャンプを引き起こす例外をスローしないことを保証します。このオプションは、クラッシュの原因となっている他のいくつかの問題をマスクしている可能性があります。 mdlOutputs内のメモリを上書きしていないことを確認してください。 – Navan
あなたは正しいです。問題は、どのようにメモリの上書きが起こっていないことを確認するのですか? Matlab + Visual Studioではかなり難しいです –