2012-02-20 100 views
1

嘗試從VB6代碼創建.NET對象時突然出現以下錯誤。它一直在努力,直到現在。嘗試從VB6創建.NET對象時出錯

錯誤:-2147467261:試圖讀取或寫入受保護的內存。這通常表明其他內存已損壞。

原因是什麼?

+0

FWIW,這裏的錯誤代碼是E_POINTER,這通常意味着一個無效(或NULL)引用被用於調用的out參數。你有沒有改變.NET代碼或VB代碼? – reuben 2012-02-20 03:44:38

+0

我知道沒有變化。當然,我必須檢查,但我想知道實際問題是什麼。 – 2012-02-20 03:58:27

+0

這看起來像你需要在調試器下學習更多的問題。根據問題出在哪裏,您可能需要調試互操作的一個或兩個方面 - 在VB6和/或.NET中。 – reuben 2012-02-20 04:01:59

回答

1

您的.NET COM接口是否更改?如果是這樣,你將需要重新註冊.NET DLL以相應地更新COM註冊表。另外,如果您使用新版本更新.NET dll版本,則需要確保沒有註冊衝突版本。嘗試搜索註冊表中的DLL名稱並刪除HKCR下的任何密鑰。然後嘗試重新註冊.NET dll。

最後,當.NET中的構造函數(或靜態構造函數)在創建.NET對象時引發異常時,我看到了這個錯誤。添加一些跟蹤和錯誤處理以確保不是這種情況。

+0

還要確保其他.NET dll int相同的進程沒有加載(他們自己的本地)舊的副本導致更加地獄。 – Deanna 2012-09-03 09:44:56