关于python调用DLL的问题

Rango 2013-08-17 01:46:29
大家好,我有一个dll文件需要加载并使用

dll的对外接口是testDLL(char *aa,char *bb)
参数aa要求16个字节,其中bb是输出参数,也是16个字节,testDLL函数也有返回值,返回数字0到10。

我用VB6调用这个dll,一切正常,输出的值也全在意料之中。
但是老板非要用python,可我从没用过python,在网上查了一些资料,但是我用python写的就怎么也不行,几近崩溃啊。我用的是py2.7。

请大家帮帮忙,错误到底出在哪里,着急啊

以下是我的py代码:


from ctypes import *
test = CDLL('testDLL.dll')
test.testDLL.argtypes = [POINTER(c_char), POINTER(c_char)]
aa = '1234567890123456'
bb = '1234567890123456'
test.testDLL(aa, bb)


下面是运行后的报错信
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/abc/test.py", line 20, in <module>
print test.testDLL(aa, bb)
ValueError: Procedure called with not enough arguments (8 bytes missing) or wrong calling convention

Process finished with exit code -1073741819
...全文
607 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rango 2013-08-17
  • 打赏
  • 举报
回复
呵呵,还是谢谢你的帮助
ImN1 2013-08-17
  • 打赏
  • 举报
回复
这个就超出我的知识范围了……
Rango 2013-08-17
  • 打赏
  • 举报
回复


十分感谢 snmr_com 。
太好了,结果打印出来了。

不过结果打印出来以后,python崩溃了。
我用的IDE是PyCharm 2.7.3

以下是崩溃的信息 和 抓图:
问题签名:
问题事件名称: APPCRASH
应用程序名: python.exe
应用程序版本: 0.0.0.0
应用程序时间戳: 5193f37d
故障模块名称: python27.dll
故障模块版本: 2.7.5150.1013
故障模块时间戳: 5193f378
异常代码: c0000005
异常偏移: 00031ea8
OS 版本: 6.1.7601.2.1.0.256.1
区域设置 ID: 2052
其他信息 1: 0a9e
其他信息 2: 0a9e372d3b4ad19135b953a78882e789
其他信息 3: 0a9e
其他信息 4: 0a9e372d3b4ad19135b953a78882e789

联机阅读隐私声明:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0804

如果无法获取联机隐私声明,请脱机阅读我们的隐私声明:
C:\Windows\system32\zh-CN\erofflps.txt

ImN1 2013-08-17
  • 打赏
  • 举报
回复
上面有写win的调用啊 windll
Rango 2013-08-17
  • 打赏
  • 举报
回复
谢谢楼上,不过我刚才忘说了,我是win7环境,实在不好意思
ImN1 2013-08-17
  • 打赏
  • 举报
回复
浅谈 Python 程序和 C 程序的整合 http://www.ibm.com/developerworks/cn/linux/l-cn-pythonandc/

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

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