kiwi898 2023-01-13 11:09 采纳率: 0%
浏览 104
已结题

python中调用dll模块报错

```python
import psutil
import ctypes

dll = ctypes.WinDLL( 'C:\kiwi_ddt.dll' )
dll.XYD_InitNetfilter2(True)
url = 某个值
username = 某个值
passwd = 某个值
url_c = ctypes.c_char_p(url)
username_c = ctypes.c_char_p(username)
passwd_c = ctypes.c_char_p(passwd)
list_pid = []
for proc in psutil.process_iter():
try:
pinfo = proc.as_dict(attrs=['pid', 'name'])
except psutil.NoSuchProcess:
pass
else:
if pinfo ['name'] == 'TangoWeb.exe':
list_pid.append(pinfo['pid'])
for i in range (5):
dll.XYD_SetProcessProxy(ctypes.c_int(list_pid[i]),ctypes.c_int(3),url_c,ctypes.c_int(719),ctypes.c_int(1),username_c,passwd_c)

```))
32位python运行, 会报错 WindowsError: exception: access violation reading 0x00000000
dll链接 https://cloud.189.cn/web/share?code=fQJJzaFzyqmq(访问码:b9ao

  • 写回答

8条回答 默认 最新

  • 爱音斯坦牛 优质创作者: 编程框架技术领域 2023-01-13 11:53
    关注

    检查 DLL 中函数的参数类型和大小,并确保你在 Python 中传递给它们的参数类型和大小相同,例如你的文件路径应写成
    ctypes.WinDLL( 'C:/kiwi_ddt.dll', handle = ctypes.WinDLL.LoadLibrary("C:/kiwi_ddt.dll"))
    同时需要注意 32位的python 是需要 32位的dll, 64位的python 是需要64位的dll,需要保证你所使用的python和dll位数相同。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月15日
  • 修改了问题 1月13日
  • 修改了问题 1月13日
  • 创建了问题 1月13日