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

易语言用习惯了,用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'))


版权声明:本文为weixin_31716637原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。