首页 新闻 会员 周边

C#调用32位的c dll

0
悬赏园豆:15 [已解决问题] 解决于 2019-03-09 17:10

这是方法原型   UINT GetCardID(BYTE* szCardID, UINT* nCardIDLen)

 

这是我写的对应的方法

[DllImport("test.dll")]
public static extern int GetCardID(byte[] szCardID, out int nCardIDLen);

在调用64的dll时是可以的···换了32位的dll就说参数不匹配了(pinvokestackimbalance)但是时可以运行出结果的,但每次都报pinvokestackimbalance

碗粥的主页 碗粥 | 初学一级 | 园豆:6
提问于:2017-06-03 22:04
< >
分享
最佳答案
0

你已经找到问题了!

收获园豆:10
花飘水流兮 | 专家六级 |园豆:13560 | 2017-06-04 22:23

可是我改来改去还是不对,它那个也不是报错就是运行起来会提醒你,点继续还是可以运行出结果的

碗粥 | 园豆:6 (初学一级) | 2017-06-04 22:25
其他回答(2)
0

加上一句CallingConvention = CallingConvention.Cdecl即可

碗粥 | 园豆:6 (初学一级) | 2017-06-07 11:23
0

这个我知道  hg业务吧

收获园豆:5
lchevalier | 园豆:209 (菜鸟二级) | 2018-06-16 20:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册