急!!C# 调用c的DLL时提示“尝试读取或写入受保护内存...”

ssqqccjj 2010-02-01 02:42:40
下面是c++DLL中的声明:
int __stdcall sp_pp_card_get_track(char *trk2, char *trk3, char *pan)
int __stdcall sp_pp_des_pin(char *pan, unsigned char *des_pin)
我在c#中调用该DLL时该怎么样声明呢?大家帮帮忙啊,我试了好多种数据类型,要么程序直接关掉,要么提示尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
...全文
87 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ctwei86 2010-02-01
  • 打赏
  • 举报
回复
路过!!!
ssqqccjj 2010-02-01
  • 打赏
  • 举报
回复
我能找到入口,貌似就是数据类型的不对应
二. int __stdcall sp_pp_card_get_track(char *trk2, char *trk3, char *pan)
/*******************************************************************
函数名称: card_get_track
函数功能: 解析卡号
相关调用:
输入 : 无
输出 : trk2(最大37个字节) 第二磁道数据
trk3(最大104个字节) 第三磁道数据
pan 银行卡号明文,13-19个字节
返回值: 0 成功 -1 失败
********************************************************************/

三. int __stdcall sp_pp_des_pin(char *pan, unsigned char *des_pin)
/*******************************************************************
函数名称: sp_pp_des_pin
函数功能: 取得缓冲区加密信息相关调用:
输入: 主账号pan
输出: des_pin 输出密文
返回值: 0为加密正常,其它为异常
以上是c++中定义的
ssqqccjj 2010-02-01
  • 打赏
  • 举报
回复
我能找到入口,貌似就是数据类型的不对应
二. int __stdcall sp_pp_card_get_track(char *trk2, char *trk3, char *pan)
/*******************************************************************
函数名称: card_get_track
函数功能: 解析卡号
相关调用:
输入 : 无
输出 : trk2(最大37个字节) 第二磁道数据
trk3(最大104个字节) 第三磁道数据
pan 银行卡号明文,13-19个字节
返回值: 0 成功 -1 失败
********************************************************************/

三. int __stdcall sp_pp_des_pin(char *pan, unsigned char *des_pin)
/*******************************************************************
函数名称: sp_pp_des_pin
函数功能: 取得缓冲区加密信息相关调用:
输入: 主账号pan
输出: des_pin 输出密文
返回值: 0为加密正常,其它为异常
-汪帆- 2010-02-01
  • 打赏
  • 举报
回复
  __stdcall调用约定:
  1、以“?”标识函数名的开始,后跟函数名;
  2、函数名后面以“@@YG”标识参数表的开始,后跟参数表;
ssqqccjj 2010-02-01
  • 打赏
  • 举报
回复
1楼,麻烦你具体说说呢?
  • 打赏
  • 举报
回复
char* ,传入用string,传出用stringBuilder
不过我看你的声明,这俩函数好象不能被C#调用

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧