1. 程式人生 > >c#呼叫C++編譯的dll時,報“出現嘗試讀取或寫入受保護的記憶體” 另類解決方案

c#呼叫C++編譯的dll時,報“出現嘗試讀取或寫入受保護的記憶體” 另類解決方案

這個問題有點詭異。

我開始遇到這個問題時,google了很久。

有一種說法是dll函式的呼叫許可權存在問題,但是回憶以前寫類似程式的時候並沒有做特殊的許可權配置,並且也沒有出現此錯誤,於是pass掉。

查詢未果之下,只好調出以前的c++ dll專案,然後新增一個方法(即本次C#調用出錯的方法)。

經過編譯之後,用C#呼叫生成好的dll,完全正常!

怪!於是又懷疑是IDE的配置存在問題(因為以前使用的是VS2005,現在為VS2010)。

重新用VS2010新建一c++ dll專案,新建完後,編譯,並用C#呼叫,又報出討厭的“出現嘗試讀取或寫入受保護的記憶體”錯誤。

試著把新增加的函式刪除,直接修改例子函式(新建專案時IDE幫我們生成的示例函式)為我想要的簽名。

接著編譯,用C#呼叫,竟然正常了。。。。。

又試著把剛剛刪掉的方法重新敲入,編譯,呼叫,又正常了。。。。。。天!