python中使用ctypes调用MinGW生成的动态链接库(dll)
2013-06-20 22:07
711 查看
关于gcc编译dll的我就不说了,网上举例一大堆,下面以g++为例。
假设有一个test.cpp文件如下:
在python中可以这样调用生成的dll文件:
注意:加载的时候要根据你将要调用的函数是符合什么调用约定的。
stdcall调用约定:两种加载方式
下面的这个文章写得不错,还讲到了结构体:
/article/1423300.html
假设有一个test.cpp文件如下:
extern "C" { __declspec(dllexport) double add(double x,double y); } double add(double x,double y){ return x+y; }在MinGW中使用g++编译:
g++ -shared -Wl,--kill-at,--output-def,test.def -o test.dll test.cpp
在python中可以这样调用生成的dll文件:
import ctypes dll = ctypes.cdll.LoadLibrary('test.dll') #加载动态链接库 f=dll.add #提取函数 f.argtypes=[ctypes.c_double,ctypes.c_double] #定义参数类型 f.restype=ctypes.c_double #定义函数返回值类型 f(2.5,3.5) #计算显示的结果为:
6.0
注意:加载的时候要根据你将要调用的函数是符合什么调用约定的。
stdcall调用约定:两种加载方式
Objdll = ctypes.windll.LoadLibrary("dllpath") Objdll = ctypes.WinDLL("dllpath")cdecl调用约定:也有两种加载方式
Objdll = ctypes.cdll.LoadLibrary("dllpath") Objdll = ctypes.CDLL("dllpath")
下面的这个文章写得不错,还讲到了结构体:
/article/1423300.html
相关文章推荐
- python中使用ctypes调用MinGW生成的动态链接库(dll)
- Python:使用ctypes库调用外部DLL(转)
- Python:使用ctypes库调用外部DLL(转)
- Python:使用ctypes库调用外部DLL
- Python:使用ctypes库调用外部DLL
- Python:使用ctypes库调用外部DLL 数据类型对应
- Python:使用ctypes库调用外部DLL
- Python:使用ctypes库调用外部DLL(附带ctypes c 类型转换图)
- 使用python2.7中ctypes库调用windows下的dll
- c++生成dll使用python调用dll的方法
- c++生成dll使用python调用dll的方法
- 本文是关于使用C++调用Matlab编译生成的Dll的说明
- 使用vs2008制作dll文件,生成动态链接库
- Python调用windows下DLL详解 - ctypes库的使用[转]
- Python调用windows下DLL详解 - ctypes库的使用
- vs2010下C++调用DLL以及怎么生成DLL和为什么使用DLL
- 关于使用vc++调用matlab生成的dll传递数组的问题
- 使用QT+MinGW编写动态库dll供VC或VB调用
- python使用ctypes模块调用windowsapi获取系统版本示例
- Python调用windows下DLL详解 - ctypes库的使用