python 调用dll的几个点:- DLL调用方式 主要有两种函数调用约定(__cdecl和__stdcall),即函数的导出方式
- 调用函数的参数使用C语言,且注意统一
- 注意调用函数内的指针是否正常释放
- 将调用函数的所有依赖库拷贝到同级目录


.cppextern "C" {
__declspec(dllexport) long __stdcall OpenFile(char* mPath);
}
.pyimport cv2
import ctypes
if __name__ == '__main__':
path = b'D:\\workshop\\'
# dll = CDLL("Detect.dll")
# dll = ctypes.cdll.LoadLibrary("./Detect.dll")
p = ctypes.create_string_buffer(path) #这个很重要否则只会传一个字符
dll = ctypes.windll.LoadLibrary("Detect.dll")
# dll.OpenFile.argtype = ctypes.c_char_p
# dll.OpenFile.restype = ctypes.c_long
print(dll)
res = dll.OpenFile(p)
参考:
1 python调用dll文件接口
2 python 调用dll 详解
3 python调用dll文件
4 Python调用 dll 文件
5 python - ctypes c_char_p 的不同行为?
6 create_string_buffer/Ctypes传参缓冲区地址/数组