Cdll与windll

#python版本是3.5. 
#需要用python调用c++的trade.dll(交易程序) 
  
>>>import ctypes 
>>>tdx=ctypes.CDLL('trade.dll') 
>>>tdx.OpenTdx() 

>>>tdx.CloseTdx() 

  
# 到这里都显示正常,说明不需要传送参数下,调用运行都是正常的?? 
# 下面我尝试调用输入参数的函数Logon 
  
# dll文件中的说明  int  Logon(char* IP, short Port, char* Version, short YybID, char* AccountNo, char* TradeAccount, char* JyPassword, char* TxPassword, char* ErrInfo); 
  
  
>>>IP=ctypes.c_char_p(b"225.120.41.57") 
>>>Port=ctypes.c_short(443) 
>>>Version=ctypes.c_char_p(b"3,5") 
>>>YydID=ctypes.c_int(0) 
>>>AccountNO=ctypes.c_char_p(b"234")   
>>>TradeNO=ctypes.c_char_p(b"234") 
>>>Jypassword=ctypes.c_char_p(b"000000") 
>>>Txpassword=ctypes.c_char_p(b"666666") 
>>>ErrInfo=ctypes.c_char_p(b"") 
>>>clientID=Tdx.Logon(IP,Port,Version,YydID,AccountNO,TradeNO,Jypassword,Txpassword,ErrInfo) 
  
没有登陆,显示错误为“ValueError:Procedure called with not enough arguments(36 buytes missing) or wrong calling convention”。 
我是python小白,也是编程的小白,看了一些资料,感觉可能性就是传入的参数数据不是c++的dll需要的数据类型。比如>>>IP,看资料输出结果是c_char_p(b"225.120.41.57"),但我的>>>IP后,输出结果是“c_char_p(145443664)”,>>>IP.value的输出结果倒是b"221.130.41.57",与一些课程说的一样。 
  
我的问题是:1、调用dll是不是没有问题?毕竟tdx.OpenTdx()和tdx.CloseTdx()都是成功的。 
             2、IP=ctypes.c_char_p(b"225.120.41.57")中,IP是不是ctypes中的c_char_p型,对应c++中的char*?,为何>>>IP后,输出结果和网络上一些老师写的输出结果不同。 
             3,如果不是参数数据类型的问题,可能是其他什么问题导致不能登录。 

            请教了。 

采用windll姐姐问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值