日期:2014-05-19  浏览次数:20739 次

C#调用DLL问题???????
读卡。函数原形:     返回值:见注1。
int   ReadCard(char   *   room,   char   *   gate,char   *   stime,   char   *   guestname,   char   *   guestid,   char   *   track1,   char   *   track2,   long   *   cardno,   int   *   st);
参数:
room   [out]:字符串指针,接收返回的房号,建议10字节。
gate   [out]:字符串指针,接收返回的授权公共通道,可以为NULL。
Guestname   [out]:字符串指针,接收返回的客人姓名,可以为NULL。
Guestid   [out]:字符串指针,接收返回的客人ID,可以为NULL。
track1   [out]:接收磁卡第1轨数据,可以为NULL。
track2   [out]:接收磁卡第2轨数据,可以为NULL。
Cardno   [out]:长整形指针,接收返回的卡号,可以为NULL。
St   [out]:整形指针,接收返回的卡状态,1-正常使用,3-正常注销,4-遗失注销,5-损毁注销,6-自动注销。可以为NULL。


char   *   测过对应的out   string   或out   StringBuild   或ref  
long   *   测过对应的out   int   或   out   long   或ref  
int   *   测过对应的out   int   或   out   IntPtr   或ref

再在不知道啥原因了,求救,谢谢




------解决方案--------------------
重新描述以下你的问题可能好点。
------解决方案--------------------
StringBuilder sb = new StringBuilder(512);

传出的字符串只能用StringBuilder

注意,一定要分配购空间!
------解决方案--------------------
[DllImport( "YOU.dll ", EntryPoint = "ReadCard ", CharSet = CharSet.Unicode)]
unsafe public static extern int SoundCom([MarshalAs(UnmanagedType.LPStr)]string room,[MarshalAs(UnmanagedType.LPStr)]string gate.....)
你这样调用一下.要是还是不行.你看看那个.dll文件的源程序,可能也有问题