2010年11月16日

VS2005使用COM元件在Windows7的問題

開發出來的程式在 xp 系統將影像載入元件做顯示是正常運作的,但在windows7 會出現錯誤訊息,以下是相關環境和解法:

開發環境 :
VS2005 ,系統XPSP2,使用COM元件屬於第三方的元件 關於影像檔案顯示的元件
測試環境:
Windows7 專業版 UAC 已關閉
System.AccessViolationException: 嘗試讀取或寫入受保護的記憶體。這通常表示其他記憶體已損毀。
於 System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
於 System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
於 System.Windows.Forms.Control.DefWndProc(Message& m)
於 System.Windows.Forms.Control.WndProc(Message& m)
於 System.Windows.Forms.AxHost.WndProc(Message& m)
於 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
於 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
於 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

解決方法:
看來是呼叫unmanaged COM出現問題, 依照以下步驟排除:
進vs2005, 工具--選項--打勾"顯示所有設定"
--偵錯--一般--取消打勾"模組載入時隱藏JIT最佳化(僅限managed)"

參考:

http://www.eggheadcafe.com/community/aspnet/2/10149441/accessviolationexception.aspx

http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/6adca20b-649f-41a4-8fa1-09534882d76c/

沒有留言:

張貼留言