C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 102 を表示中)
■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が検出されてもそのままデバッグを続けることは可能のようです。
ただ、結局その後で落ちてしまいます。

返信 編集キー/


管理者用

- Child Tree -