python接收易语言dll消息_Python中调用易语言写dll

本文记录了使用Python调用32位易语言编写的DLL过程中遇到的问题及解决方法,包括64位Python无法调用32位DLL的兼容性问题,以及DLL方法参数的传递和编码解码过程。
摘要由CSDN通过智能技术生成

易语言用习惯了,用Python总觉得不方便,最近有使用dll的需求,所以做个笔记,记录一下使用Python调用易语言dll遇到的坑。

先上易语言dll源码

70c23dc0bd5386c0cccf833b6bcd1cfe.png

Python调用第三方dll,那么 ctypes 模块是少不了,导入之,

from ctypes import *

加载dll总得要个路径吧,os和sys模块也少不了

import sys,os

设置dll目录

os.add_dll_directory(sys.path[0])#设置dll目录

到这一步,Python的IDE开始给我报错了,巴拉巴拉一长串,百度无果,最后发现,我的Python是64位的,而易语言写的dll是32位的,64位的Python不能调用32位的dll,好吧,那就32位Python装起来。

换成32位Python之后,一切都顺利了。

加载我写的dll

dll=CDLL('test.dll')#加载dll

调用一下dll中的mm方法

txt = string_at(dll.return_test())

输出txt后,发现内容是一串转义符(应该是这么叫吧,反正是我看不懂的一串字符)

转换为utf-8输出,发现保存,那就gbk走起吧

顺利输出

6bcc2bed28ec4d8207a9fa6d7231c70e.png

OK,那就测试一下带参数的dll吧

par = '参数1'

c = par.encode('gbk')

txt = string_at(dll.par_test(c))

b2ef8386f58c7c24d80310f9bdbcfde8.png

一切顺利,打完收工!

下面是完整代码

import sys

import os

from ctypes import *

os.add_dll_directory(sys.path[0]) # 设置dll目录

dll = CDLL('test.dll') # 加载dll

txt = string_at(dll.return_test())

print(txt.decode('gbk'))

par = '参数1'

c = par.encode('gbk')

txt = string_at(dll.par_test(c))

print(txt.decode('gbk'))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值