C#动态库调用时提示: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
这是一个动态库调用函数:
下面是在C#中对其调用:
当我使用“array = Encoding.Default.GetString(data);”(注有//**********”)时,程序能够正常调用,但编码结果与C/C++中不一样,于是我使用 “array = Encoding.Unicode .GetString(data);”,虽然编码结果一样了,但是在调用“mibdecode(array);”时,却提示:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。这是什么原因啊?求解!
MIBDLL_API int _stdcall mibdecode(char* array);下面是在C#中对其调用:
[DllImport("MibDll.dll", EntryPoint = "?mibdecode@@YGHPAD@Z")]
public static extern int mibdecode(string array);
private void button1_Click(object sender, EventArgs e)
{
string str,array;
str = textBox1.Text;
string[] substr = str.Split(new char[] { ' ', '\n' }, StringSplitOptions.RemoveEmptyEntries);
byte[] data = new byte[substr.Length];
for (int i = 0; i < substr.Length; i++)
{
data[i] = Convert.ToByte(substr[i], 16);
}
//string array = BitConverter.ToString(data);
//array = Encoding.Default.GetString(data);//************
array = Encoding.Unicode .GetString(data);
//textBox2.Text = array;
mibdecode(array);
}当我使用“array = Encoding.Default.GetString(data);”(注有//**********”)时,程序能够正常调用,但编码结果与C/C++中不一样,于是我使用 “array = Encoding.Unicode .GetString(data);”,虽然编码结果一样了,但是在调用“mibdecode(array);”时,却提示:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。这是什么原因啊?求解!
...全文
相关推荐
关于 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。的解决方法
主要介绍了尝试读取或写入受保护的内存。这通常指示其他内存已损坏。的解决方法,有需要的朋友可以参考一下
金橙子C#调用动态库扩展_函数最全,只需引用即可调用
EzCadEx(金橙子C#调用动态库扩展_函数最全,只需引用即可调用) 不含基础库,MarkEzd2.7.0测试通过!
c# 对CSV文件操作(写入、读取、修改)
主要介绍了c# 如何对CSV文件操作,帮助大家更好的理解和学习C#,感兴趣的朋友可以了解下
Demo: c/c++动态库(DLL)调用,c#等其他语言调用c/c++的DLL
c++动态库调用另一个动态库 c++动态库调用c动态库 c#等其他语言调用c/c++动态库
C#编成Modbus TCP连接PLC寄存器读取、写入
C#编成Modbus TCP连接PLC寄存器读取、写入,完整分享源代码,有需要的人可以下载


