易语言用习惯了,用Python总觉得不方便,最近有使用dll的需求,所以做个笔记,记录一下使用Python调用易语言dll遇到的坑。
先上易语言dll源码
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走起吧
顺利输出
OK,那就测试一下带参数的dll吧
par = '参数1'
c = par.encode('gbk')
txt = string_at(dll.par_test(c))
一切顺利,打完收工!
下面是完整代码
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'))