1、无参
动态链接库:
void SayHello() { MessageBox(NULL, TEXT("你好你好~~~"), TEXT("你好"), MB_OK); }
加载dll,调用函数
from ctypes import * lib = CDLL ("e:\\Dll1.dll") lib.SayHello()
2、有参
from ctypes import * lib = CDLL ("e:\\Dll1.dll") lib.StrAppend('你好') ret = lib.IntAdd(3,4) print(ret)
IntAdd 和 StrAppend, 我们直接使用了Python对象作为参数传入。
实际上,底层的ctypes库调用c语言库,不能直接传递python对象的,需要转化为c语言接口对应的类型。
它会根据我们使用的python对象类型,猜测应该转化为什么类型的数据。
Python数据对象和C语言的数据对象的对应关系见 ctypes — A foreign function library for Python — Python 3.10.4 documentation