C#调用C++的dll总是报错 Attempted to read or write protected memory.Attempted to read or write p……C#代码:[DllImport("duxie.dll",EntryPoint = "lala",CharSet = CharSet.None)]public static extern string lala();private void button1_Click(ob

来源:学生作业帮助网 编辑:六六作业网 时间:2024/05/03 08:29:13
C#调用C++的dll总是报错Attemptedtoreadorwriteprotectedmemory.Attemptedtoreadorwritep……C#代码:[DllImport("duxie

C#调用C++的dll总是报错 Attempted to read or write protected memory.Attempted to read or write p……C#代码:[DllImport("duxie.dll",EntryPoint = "lala",CharSet = CharSet.None)]public static extern string lala();private void button1_Click(ob
C#调用C++的dll总是报错 Attempted to read or write protected memory.Attempted to read or write p……
C#代码:
[DllImport("duxie.dll",EntryPoint = "lala",CharSet = CharSet.None)]
public static extern string lala();
private void button1_Click(object sender,RoutedEventArgs e)
{
string a = lala();//////////此处报错
}
错误为:Attempted to read or write protected memory.Attempted to read or write protected memory.
另外,dll本身的返回值是char*
我是新手,希望大家多多指教,最好详细一点,我会多加分的,

C#调用C++的dll总是报错 Attempted to read or write protected memory.Attempted to read or write p……C#代码:[DllImport("duxie.dll",EntryPoint = "lala",CharSet = CharSet.None)]public static extern string lala();private void button1_Click(ob
建议动态库不要返回字符串指针.而是在参数中传递.
基本上没有见过动态库中返回字符串指针的.看看所有WIN32的API,应该是没有的
返回字符串是在C++中产生的,而C#的GC机制会试图销毁这个字符串
估计这时就出现你说的这个错误了
作为引参传递时,参数内存是以C#分配的,所以GC机制可以自动回收它的内存.
解释的可能不是很好,很简单,这个错误的意思应该 是:C#不能读写C++产生的内存.
当然,肯定有别的方法可以读写.不在本问题中了.

C#调用C++的dll报错 Attempted to read or write protected memory.This is.之前用C++封装了一个DLL,后来开发了一个C#程序调用该DLL.突然发现:1:将DLL编译为“Use MFC in a Static Library”,就会出现题目报的错误2 C#调用C++的dll总是报错 Attempted to read or write protected memory.Attempted to read or write p……C#代码:[DllImport(duxie.dll,EntryPoint = lala,CharSet = CharSet.None)]public static extern string lala();private void button1_Click(ob 在C#中,下列关于构造函数的说法描述正确的是A:构造函数可以声明返回值 B:在类中可以显式的调用类的构造函数 C:子类构造函数会隐式调用基类的构造函数 D:一般情况下,构造函数总是pu 类如何在C中表示c语言中调用别的DLL,这个DLL中有类,请问,在C中如何表示啊? 求c# dll 进程注入的例子,最好解释的详细点,谢谢! 调用dll 如何将C++函数转换为c#函数long WINAPI RetrieveEarliestRecord(unsigned char *ConAddr ,unsigned char* RecordData,unsigned char* RecordLength,unsigned char *RecordType,unsigned char* FreeSpaceRate,long PortHandle);功能描述:提 如何调用DLL文件,详细讲解REGISTER的三个参数.请说明namespace命名空间如何定义. 用MinGW编译,报错cannot find -lmsvcr90,请问怎么处理查了查好像缺少lmsvcr90.dll文件,谁能给一个并告诉放置的问题, 下面这两句话错在哪,为什么?1.c语言程序总是从第一个定义的函数开始执行2.在c语言程序中,要调用的函数必须在main()函数中定义 C# this和C++this 的区别? C和C#的选择有意义吗 Atte.是名字还是什么单词的缩写 UNITY中怎么在一个物体上调用另一个物体的LIST按理说应该没问题啊,但是报错了,没用过LIST求问何解 c# form show我新建了一个form4再在form1的某事件中加入了这段代码,怎么报错 windows里面的DLL是什么意思 C#和C shop是一回事吗?C#的可视化能力跟Java比怎么样? c如何调用C++ android如何调用c