■60968 / ) |
Re[11]: .NetFramework3.5から4に変更すると例外発生 |
□投稿者/ Ys (13回)-(2011/07/27(Wed) 17:21:11)
|
■No60939 (Azulean さん) に返信
Azulean さん 返信ありがとうございます。
> ところで、プロジェクトのプロパティのデバッグタブでアンマネージコードデバッグを有効にする、Visual Studio のオプション設定のデバッグの全般から毎コードのみ以外をデバッグ対象にした状態で、StackOverflowException を起こさせた場合、呼び出し履歴に何か怪しいものでていますか? > 推測の材料にできそうな DLL 名とか、関数名とか。
【ntdll.dll】が大量に発生しています! 何回か行うとたまに‘!'から後ろのほうの値が違うのがありますが、 ntdll.dll!77c50a9d() が大量に発生し、最終的に 「[下のフレームは間違っているか、または見つかりません。ntdll.dllに対して読み込まれたシンボルはありません。]」 で例外が発生している模様です。
そのほかのパターンとして user32.dll!7656????() ←?は様々な英数字の組み合わせ が何回か発生し、 「[下のフレームは間違っているか、または見つかりません。user32.dllに対して読み込まれたシンボルはありません。]」 で例外が発生している場合もあります。
すいません、私ではこれから推測することができないのですが、何かヒントになりますでしょうか?
■No60940 (む さん) に返信
む さん 返信ありがとうございます。
> DLL側に手を加えても良いのであれば、extern "C" __stdcall + DEFファイル(■No60939 (Azulean さん)参照)でエクスポートしてみてはいかがでしょうか? > .NetではDllImportでStdcall/Winapiを指定して呼び出す。 > 改善しないようなら、何か根本的に見落としている事がありそう。(少なくとも呼出規約の疑いは晴れるかと)
すいません、私が悪いのかどうしてもstdcallでうまく動きません。 また、本番ではDLL側に手を加えることが難しいかもしれません(といっても、本当にDLLが問題なら直さなければいけないのですが…)。
> 実はDLL側で何か悪さしてた/されてた事が露見したとか・・・ > .Netでは無い環境から呼び出したら結果は変わったりするんですかねぇ・・・
DLLを呼ぶだけの新規のソリューションを作ってテストしてみたら例外が発生しませんでした。(すいません、.NETで試してしまいました。。。) ・・・ということは、問題はDLLではなく、DLLを使ってるソリューション(プロジェクト)が問題!?
|
|