C++:int WINAPI CFISO15693_Inventory(WORD wDevID, BYTE *pData, BYTE *pLength); 
C#:public static extern int CFISO15693_Inventory(ushort wDevID, ref byte[] pData, ref byte pLength); 
我看出的问题是传参的问题。
我做的时候字符串类型的参数是用C# 中的string类型的,所以:
我建议楼主参数:ref byte[] pData, ref byte pLength,改为:string pData,string pLength;
传参时直接传c#中 string类型的即可。

解决方案 »

  1.   

    BYTE* 用 System.IntPtr
    [DllImport("CFDll.dll", EntryPoint = "CFISO15693_Inventory")] 
    public static extern int CFISO15693_Inventory(ushort wDevID, intPtr pData, ref .....
    int cfIso15693_inventory; 
    byte[] dsfidUid = new byte[1024]; 
    ushort x = 0; 
    intPtr bytepointer = Marshal.UnsafeAddrOfPinnedArrayElement ( dsfidUid,0);
    cfIso15693_inventory = CFISO15693_Inventory(x, ref dsfidUid, ref length); 
      

  2.   

    C或C++的指针类型在C#中一般传String或StringBulider类型
      

  3.   

    楼主给你的vs装个pinvoke插件得了,网址:
    http://www.red-gate.com/products/pinvoke.net/index.htm
    整天都见有人问这样的问题,连一些基本数据类型都搞不明白,真是无语。
      

  4.   

    我觉得 ref byte[] pData 这项, 不用ref吧主要就是ref这个关键字用不用的问题,以前自己遇到过
    ,多自己试一下改变