0

.Netプログラムに深刻な問題があります。ネイティブdllを呼び出し、ネイティブメソッドが見つからないため、すぐにクラッシュします。これは以前に見た動作であり、C#コンパイラは、その無限の知恵で、明らかにそうではないネイティブdllを呼び出した場合でも、プログラムがDEP互換であるというフラグを設定します。

これには標準的な回避策があり、ビルド後のステップでフラグがNot DEP互換に設定されており、これは正常に機能します。私のマシンを除いてどこでも。私はWindows732ビットを使用していますが、このプログラムは、使用しているWin 7 64ビットマシン、およびVistaとXPで正常に動作します。

ただし、私のマシンでは、DataExecutionPolicy_SupportPolicyは0です。つまり、DEPを正常にオフに切り替えました。それがまだ行動できる状況があるかどうか誰かが知っていますか?または、同じ効果を持つ可能性のある他のメカニズムはありますか?

また、新しくインストールされた別のWin7 32ビットマシン(これも私のようなThinkpad)をチェックしましたが、そこでも動作します。すべてのBIOS設定を比較しましたが、それらは類似しています(私のものはT61、もう1つはR60です)。

問題のdllは、ネイティブプログラムから呼び出された場合、私のマシンでも正常に機能します。私たちはアイデアを使い果たしています...どんな助けでも大歓迎です!

4

1 に答える 1

0

OK、問題は結局、まったく別のものでした。私のマシンは、ネイティブ dll のパスが正しく設定されていない唯一のマシンでした。これにより、Win7 では即座にクラッシュが発生しましたが、XP では、何が起こったのか (非常に不可解な) アイデアを提供するメッセージ ボックスがありました。

したがって、DEP の責任を免除することができます。同じ疑いを持っている他の人がファイルパスを確認することを忘れないように、タイトルに残しています!

于 2010-04-12T08:26:22.950 に答える