#python版本是3.5.
#需要用python调用c++的trade.dll(交易程序)
>>>import ctypes
>>>tdx=ctypes.CDLL('trade.dll')
>>>tdx.OpenTdx()
1
>>>tdx.CloseTdx()
0
# 到这里都显示正常,说明不需要传送参数下,调用运行都是正常的??
# 下面我尝试调用输入参数的函数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,如果不是参数数据类型的问题,可能是其他什么问题导致不能登录。
#需要用python调用c++的trade.dll(交易程序)
>>>import ctypes
>>>tdx=ctypes.CDLL('trade.dll')
>>>tdx.OpenTdx()
1
>>>tdx.CloseTdx()
0
# 到这里都显示正常,说明不需要传送参数下,调用运行都是正常的??
# 下面我尝试调用输入参数的函数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姐姐问题