首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#调用dll中的一个c写的访问文件的函数,出现Accessviolationexception错误

2012-12-27 
C#调用dll中的一个c写的访问文件的函数,出现Accessviolationexception异常这是c代码typedef struct ProCla

C#调用dll中的一个c写的访问文件的函数,出现Accessviolationexception异常
这是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 函数是干什么的

热点排行