python调用dll动态库
来源:互联网 发布:淘宝杜蕾斯授权店 编辑:程序博客网 时间:2024/06/06 03:40
python调用动态库有两种类型,主要看dll的导出函数的调用约定:__stdll和__cdecl
对应的动态库的调用方式为
ctypes.cdll.LoadLibrary( 'test.dll' )对应__cdecl调用方式
ctypes.windll.LoadLibrary( 'test.dll' )对应_stdll调用方式
test.h文件
#include <stdio.h>
#include <wchar.h>
//因为给python测试,默认不给c\c++程序调用,所以直接写__declspec(dllexport),如果要给c\c++调用,需要自己定义宏决定__declspec(dllexport)是导入还是导出
extern "C"
{
__declspec(dllexport) int __cdecl test(wchar_t* a, int len);
};
test.cpp文件
#include "test.h"
__declspec(dllexport) int __cdecl test(wchar_t* a, int len)
{
printf("get [%S] len %d\r\n", a, len);
printf("hell test %s line %d \r\n", __FUNCTION__, __LINE__);
return 169;
}
调用动态库的test.py文件
#coding=utf-8
import ctypes
slen = 4
sBuf = 'aaaaaaaaaabbbbbbbbbbbbbb'
adll = ctypes.cdll.LoadLibrary( 'pydll.dll' )
##传入的参数是宽字符
adll.test(sBuf, 123);
input("press enter to quit")
如果调用方式不匹配可能报ValueError: Procedure probably called with too many arguments (8 bytes in excess)错误
- python调用dll动态库
- python 调用so dll动态链接库
- python ctypes 调用 dll动态库小结
- python 3 调用c/c++ 动态链接库 *.dll
- python调用dll动态库传入结构体作为参数
- python中调用动态链接库(C++,DLL)
- java 调用 dll动态库
- 动态库DLL的调用
- webservice 调用dll动态库
- dll动态库调用问题
- C# 动态调用DLL库
- dll动态库调用约定
- C语言编写DLL动态链接库并分别用VB和Python调用
- python中使用ctypes调用MinGW生成的动态链接库(dll)
- 调用本地方法(Dll动态库)
- C#调用C++动态链接库(dll)
- 异地调用dll动态库的技巧
- java调用动态库(.dll或.so)
- Android图片压缩(质量压缩和尺寸压缩)&Bitmap转成字符串上传
- 关于Socket通讯时通讯协议的制定
- shell中的判断与循环
- Servlet
- 小艾笔记——AndroidManifest.xml分析
- python调用dll动态库
- caffe学习笔记(五)--使用自己的数据集第一次进行训练
- 对于初学编程的一些建议
- angularjs开篇
- 正则表达式30分钟入门教程
- spring DelegatingFilterProxy 过滤器 的原理及运用
- android手机获取手机设备信息
- Linux下高效编写Shell——shell特殊字符汇总
- php中字符串引用变量或数组