VB.NET(2005)中关于dll调用的错误信息(转)
同樣適用于C#,同樣浪費了我一天時間,同樣的DLL引用
===============低調的分割線=================================
在昨天晚上調用了一個計算及處理的dll文件,是c++編寫的。出現了以下信息:
未處理異常: System.AccessViolationException
嘗試讀取或者寫入受保護的內存。這通常指示其他內存已損壞。
出現的位置就是調用的dll的function地方。經查閱,很多人都遇到了這個問題,但沒有提出過明確的解決方法,后來查到了微軟關于這個問題的描述:
http://support.microsoft.com/kb/923028/zh-cn
花費了數個小時來注冊并下載補丁-_-!!
本來想直接安裝SP1的,可是網上都說安裝費時得要命,怕了,還是不裝了。有問題逐個解決吧!
補丁安裝結束!問題依舊!!!我崩潰了~~~
難道讓我修改c++源碼?!我可干不了啊~~~
無奈,看來又得做放棄vb.net 的打算了,如果不能在短時間解決它,我也沒有辦法啊!
我再次祭起搜索大法,苦啊,好多同志都遇到這個問題了,但每一個明確告訴我是怎么解決的。都一個個興奮的跑來說:我解決了!然后就沒影子了,切!
抱著最后一點點希望,我開始逐個調試參數的傳遞形式和類型(10個參數啊,我吐血中~)
我的天!竟然真是類型的問題!我崩潰啊!
原來對于c++的long是32位的,而VB.NET的long是64位的!需要將參數定義成LNT32,不然就會出現內存錯誤!
我原來遇到的類似的都是提示什么pinvok錯誤的啊!唉~~
問題解決了。同志們要記住,一定要保證調用dll函數的參數正確啊!我又浪費了一天~~
在昨天晚上調用了一個計算及處理的dll文件,是c++編寫的。出現了以下信息:
未處理異常: System.AccessViolationException
嘗試讀取或者寫入受保護的內存。這通常指示其他內存已損壞。
出現的位置就是調用的dll的function地方。經查閱,很多人都遇到了這個問題,但沒有提出過明確的解決方法,后來查到了微軟關于這個問題的描述:
http://support.microsoft.com/kb/923028/zh-cn
花費了數個小時來注冊并下載補丁-_-!!
本來想直接安裝SP1的,可是網上都說安裝費時得要命,怕了,還是不裝了。有問題逐個解決吧!
補丁安裝結束!問題依舊!!!我崩潰了~~~
難道讓我修改c++源碼?!我可干不了啊~~~
無奈,看來又得做放棄vb.net 的打算了,如果不能在短時間解決它,我也沒有辦法啊!
我再次祭起搜索大法,苦啊,好多同志都遇到這個問題了,但每一個明確告訴我是怎么解決的。都一個個興奮的跑來說:我解決了!然后就沒影子了,切!
抱著最后一點點希望,我開始逐個調試參數的傳遞形式和類型(10個參數啊,我吐血中~)
我的天!竟然真是類型的問題!我崩潰啊!
原來對于c++的long是32位的,而VB.NET的long是64位的!需要將參數定義成LNT32,不然就會出現內存錯誤!
我原來遇到的類似的都是提示什么pinvok錯誤的啊!唉~~
問題解決了。同志們要記住,一定要保證調用dll函數的參數正確啊!我又浪費了一天~~
轉載于:https://www.cnblogs.com/kevinzhwl/archive/2010/09/02/3878895.html
總結
以上是生活随笔為你收集整理的VB.NET(2005)中关于dll调用的错误信息(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MVC --.Routing
- 下一篇: 比较两个引用的几种方法