随笔

导航

C# 调用C/C++ DLL 相关

Posted on 2009-11-19 15:02  烈日下的小树  阅读(420)  评论(0编辑  收藏  举报

DLL 中的函数  nResult=Elitel_Transmit(&mData);

因为其中参数mData为地址,所以在C#中写时用下边的代码将其放在在一个地址ptr中

 IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(mData));
                Marshal.StructureToPtr(mData, ptr, false);

nResult=Elitel_Transmit(ptr);

 

memset函数

 

DLL 中函数

 Catbee_Apdu mData;

memset(&mData,0,sizeof(mData));

C#  Catbee_Apdu为结构体

Catbee_Apdu mData;

mData=new Catbee_Apdu();//等于memset(&mData,0,sizeof(mData));

数组使用memset(sCurCardID, 0, sizeof(sCurCardID));其中sCurCardID为数组  时

可用Array.Clear(sCurCardID,0,8);//数组长度为8 UInt32 sCurCardID=new UInt32[8];

 

memcpy(sCurCardID, mLinkData.aCardID, 8);

在C#中写成Array.Copy(mLinkData.aCardID, sCurCardID, 8);

 

未经测试不一定好使