c++ 结构体地址 转换成ulong_c++结构体转换为C#结构体

博客内容涉及C#编程中调用DLL接口的问题,具体是使用`RequestFindFileOpenExt`函数时遇到`尝试读取或写入受保护的内存`的错误。作者定义了结构体`uEasyFileInfo_st`并尝试从DLL中获取文件信息,但程序报错。问题可能出在结构体定义、参数传递或者DLL调用方式上。
摘要由CSDN通过智能技术生成

#defineEASYFILENAMELENG1024structuEasyFileInfo_st{ unsignedintStructSize;  intreserved;     __int64create_time;   _...

#define EASYFILENAMELENG 1024struct uEasyFileInfo_st{ unsigned int StructSize;  int reserved;     __int64 create_time;   __int64 modify_time;   __int64 size;     unsigned long attrib;   char pFilename[EASYFILENAMELENG];};这是dll文件的 api的调用说明int WINAPI RequestFindFileOpenExt( uecHandle EasyFileHandle, const char* pPath, uEasyFileInfo_st* pfileinfo )  EasyFileHandle[in] uEasyFileClient_COM_Start和uEasyFileClient_USB_Start返回的句柄pPath [in] 指向开始查找的目录,如果Server端是PT800系列,此参数应该为 "*.*"pfileinfo  [out] 指向 uEasyFileInfo_st 结构体的指针,查找到的文件信息将填入到这个结构体中。  /*下面是我写的 但是程序报错*/下面是我写的结构体        public  struct  uEasyFileInfo_st        {            public UInt32 StructSize;            public int reserved;            public Int64 create_time;            public Int64 modify_time;            public Int64 size;            public UInt32 attrib;            public string[] pFilename;        }这是我C#引入的dll调用[DllImport("uEasyFileClient.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]public static extern int RequestFindFileOpenExt(IntPtr EasyFilehandle,  string pPath, ref  uEasyFileInfo_st  pfileinfo);C#中的调用(调试时报:尝试读取或写入受保护的内存。这通常指示其他内存已损坏)  IntPtr uecHandle=new IntPtr();        private void button3_Click(object sender, EventArgs e)        {            NLSClass.uEasyFileInfo_st temp = new NLSClass.uEasyFileInfo_st();            int i = NLSClass.RequestFindFileOpenExt(uecHandle,  "*.*", ref temp);        }

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值