2012-02-20 3 views
1

VB6コードから.NETオブジェクトを作成しようとすると、次のエラーが突然表示されます。それまでは今まで働いてきました。VB6から.NETオブジェクトを作成しようとするとエラーが発生する

エラー:-2147467261:保護されたメモリを読み書きしようとしました。これはしばしば、他のメモリが壊れていることを示します。

原因は何ですか。

+0

FWIWここでのエラーコードはE_POINTERです。通常は、コールのoutパラメータに無効な(またはNULL)参照が使用されたことを意味します。 .NETコードまたはVBコードを変更しましたか? – reuben

+0

私が知っている変更はありません。もちろん、私はチェックしなければならないだろうが、実際の問題が何であるか知りたい。 –

+0

これは、デバッガの下でもっと学ばなければならない問題のようです。問題がどこにあるかに応じて、VB6および/または.NETで相互運用の片側または両側をデバッグする必要があります。 – reuben

答えて

1

.NET COMインターフェイスは変更されていますか?もしそうなら、それに応じてCOMレジストリを更新するために、あなたの.NET dllを再regasmする必要があります。

また、新しいビルドで.NET DLLのバージョンを更新する場合は、競合するバージョンが登録されていないことを確認する必要があります。レジストリでdllの名前を検索し、HKCRの下のキーを削除してみてください。次に、.NET DLLを再登録してみてください。

最後に、.NETのコンストラクタ(または静的コンストラクタ)が.NETオブジェクトの作成中に例外をスローすると、このエラーが発生しました。いくつかのトレースとエラー処理を追加して、そうでないことを確認してください。

+0

また、他の.NET dllで同じプロセスがロードされていないことを確認してください。 – Deanna

関連する問題