Cdll与windll
来源:互联网 发布:柠檬绿茶 淘宝 编辑:程序博客网 时间:2024/05/16 11:45
#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姐姐问题
0 0
- Cdll与windll
- cdll & windll & oledll
- cdll和windll的区别
- pyton中cdll windll oledll 的区别
- cdll 和windll 的调用方式
- windll对象
- Python中CDLL加载dll后,如何释放
- ctypes cdll打开动态库,数据交换,调试
- 简单分析Python ctypes模块的WinDLL源码(我爱Python,吼吼~)
- 与
- 与
- “” 与 “”
- ##与#
- >> 与 > >
- :与::
- &与&&
- && 与 &
- [[与((
- 【多线程 3】多线程间的变量共享方式
- scp报错not a regular file
- AXI3和AXI4区别--端口篇
- PAT_自测1_打印沙漏
- allegro生成不规则钻孔 .rou
- Cdll与windll
- Spark core 核心算子优化
- SpringBoot(二)开发WEB应用
- Linux-CentOS6.7——安装tftp服务器
- String类1
- Poj 2479 Maximum sum
- jsonp的原理
- 12-简单的系统救援模式
- 聚类分析经典算法讲解及实现