这个问题有点诡异。
我开始遇到这个问题时,google了很久。
有一种说法是dll函数的调用权限存在问题,但是回忆以前写类似程序的时候并没有做特殊的权限配置,并且也没有出现此错误,于是pass掉。
查询未果之下,只好调出以前的c++ dll项目,然后添加一个方法(即本次C#调用出错的方法)。
经过编译之后,用C#调用生成好的dll,完全正常!
怪!于是又怀疑是IDE的配置存在问题(因为以前使用的是VS2005,现在为VS2010)。
重新用VS2010新建一c++ dll项目,新建完后,编译,并用C#调用,又报出讨厌的“出现尝试读取或写入受保护的内存”错误。
试着把新增加的函数删除,直接修改例子函数(新建项目时IDE帮我们生成的示例函数)为我想要的签名。
接着编译,用C#调用,竟然正常了。。。。。
又试着把刚刚删掉的方法重新敲入,编译,调用,又正常了。。。。。。天!