■60921 / ) |
Re[8]: .NetFramework3.5から4に変更すると例外発生 |
□投稿者/ Ys (12回)-(2011/07/26(Tue) 10:50:06)
|
■No60917 (む さん) に返信
む さん 返信ありがとうございます。
> DLLの方で関数に__stdcall付けてますか? > 呼出規約は付けてなければcdecl、あればstdcallのはず。
すいません、最初に確認・報告すべきでした。 __stdcallは付いていません。
extern "C" __declspec(dllexport) int OutPutData(char* CheckPathA, char* CheckPathB, char* XmlFile)
試しに__stdcallをつけてみたのですが、「エントリポイントが見つかりません」というエラーが出るようになってしまいます。
> ついでにこんな情報も有るようです。 > > VisualStudio2010から、MDA(Managed Debugging Assistants)がデフォルトで有効になりました。 > MDAは、ランタイムイベントに関するメッセージを発生させ、マネージコードからアンマネージコードへの遷移時に発生する検出が難しいバグを分離できる機能です。 > PInvokeStackImbalanceは、このMDAによって検出されます。 > ・・・ > PInvokeStackImbalanceが検出されても、問題が露呈せず動作します。 > (PInvokeStackImbalanceを発生させ、食い違ったスタックの処理を.NETがうまくやります。) > そのため、PInvokeStackImbalanceを無効にするという方法が取られることがありますが、もっと良い方法があります。 > それは、C#コンパイラに、MeCabのコンパイラの呼出規約を教えることです。 > ・・・ > http://wiki.sh4e.net/?Tips%2FOther%2FMeCab > > MDA pInvokeStackImbalance の無効化 ― CLR 2.0 でのデバッグ実行 (2) > http://d.hatena.ne.jp/NyaRuRu/20051224/p1
PInvokeStackImbalanceを無視するということですよね? 確かに、PInvokeStackImbalanceが検出されてもそのままデバッグを続けることは可能のようです。 ただ、結局その後で落ちてしまいます。
|
|