C#调用dll中的一个c写的访问文件的函数,出现Accessviolationexception错误
C#调用dll中的一个c写的访问文件的函数,出现Accessviolationexception异常
这是c代码
这是c#代码
在winform程序中调用时,刚开始第一次点击可以成功,后来多运行几次,或多点几次就会出现:“尝试读取或写入受保护的内存。这通常指示其他内存已损坏” 这样的异常。 有没哪位高手知道的 告诉一下我,,,,在这里谢谢了!!
------解决方案--------------------
整个struct都用IntPtr传非托管内存数据过去,大小自己根据内容定义。
------解决方案--------------------
AddProClass 这个函数的申明呢,另外 AddProduct 函数是干什么的
这是c代码
typedef struct ProClass
{
char* ProClassName;//产品类型
char* ProClassRegDate;//产品类型添加时间
ProClass* next;
}ProClass,*ProClassLink;
//添加产品类
void AddProClass(ProClass proclass)
{
FILE* fp;
fp=fopen("ProClass.txt","ab");
fprintf(fp,"%s %s",proclass.ProClassName,proclass.ProClassRegDate);
fclose(fp);
}
这是c#代码
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct ProClass
{
[System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)]
public string ProClassName;
[System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)]
public string ProClassRegDate;
public System.IntPtr next;
}
[DllImport("linklist.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
private extern static void AddProduct(LinkList product);
public static void AddProClass(string ProClassName)
{
ProClass proclass = new ProClass();
proclass.ProClassName = ProClassName;
proclass.ProClassRegDate = GetTime();
proclass.next = IntPtr.Zero;
AddProClass(proclass);
}
在winform程序中调用时,刚开始第一次点击可以成功,后来多运行几次,或多点几次就会出现:“尝试读取或写入受保护的内存。这通常指示其他内存已损坏” 这样的异常。 有没哪位高手知道的 告诉一下我,,,,在这里谢谢了!!
------解决方案--------------------
整个struct都用IntPtr传非托管内存数据过去,大小自己根据内容定义。
------解决方案--------------------
AddProClass 这个函数的申明呢,另外 AddProduct 函数是干什么的