关于gcc编译dll的我就不说了,网上举例一大堆,下面以g++为例。

假设有一个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")

下面的这个文章写得不错,还讲到了结构体:

python调用ctypes中windll中的方法超时处理_python中使用ctypes调用MinGW生成的动态链接库(dll)...相关推荐

  1. python属性和方法的区别_Python中几种属性访问的区别

    起步 python的提供一系列和属性访问有关的特殊方法:__get__, __getattr__, __getattribute__, __getitem__ .本文阐述它们的区别和用法. 属性的访问 ...

  2. python属性和方法的区别_Python中几种属性访问的区别与用法详解

    起步 在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问.一般而言, ...

  3. python中的方法什么意思_python中的函数和方法的区别是什么

    python中的函数和方法的区别: 1.函数要手动传self,方法不用传self. 2.如果是一个函数,要用类名去调用,如果是一个方法,要用对象去调用. 举例说明:class Foo(object): ...

  4. python类与方法与函数_Python 中的函数与类的方法

    在 python 中,def 定义的函数与类中的方法有很大的不同,两者是不同的类型. >>> def foo(): ... print "foo" ... > ...

  5. python中的方法需要定义_Python中规范定义命名空间的一些建议

    API的设计是一个艺术活.往往需要其简单.易懂.整洁.不累赘. 很多时候,我们在底层封装一个方法给高层用,而其它的方法只是为了辅助这个方法的. 也就是说我们只需要暴露这个方法就行,不用关心这个方法是怎 ...

  6. python get方法列表参数_python中requests库get方法带参数请求

    起因是想爬五等分的花嫁的漫画.这是其中的一个坑 先上代码 data={ 'cid':567464, 'page':, 'key':'', 'language':1, 'gtk':6, '_cid':5 ...

  7. python中函数type可以测试对象类型_Python中type函数type()显示对象的类型,dir函数dir()显示的是对象可用的方法。_学小易找答案...

    [判断题]new_word = word.upper() 这一语句表示将word这个变量的值全部小写并赋给新变量new_word. [单选题]All of the students have fini ...

  8. python中元祖 字典 列表的区别_Python中元祖,列表,字典的区别

    原博文 2016-08-16 15:25 − Python中有3种內建的数据结构:列表.元祖和字典: 1.列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目. 列表中的 ...

  9. python中a=str(int(a))什么意思_python中a+=a和a=a+a的区别

    += 是 + 的一种升级版本, 具有能把执行后的结果再写回传递来的变量本身的功能, 可变变量自身有比不可变变量多一个魔法方法 _iadd_, += 操作调用 _iadd_方法,没有该方法时,再尝试调用 ...

最新文章

  1. AC自动机算法及模板
  2. 基于深度学习的交互式问答研究综述
  3. Eclipse + Spring boot +mybatis + mysql
  4. MYSQL中如何查看表结构命令_mysql查看表结构命令
  5. jmeter常用插件介绍
  6. 四五月份:关键词是沟通、绘画和SQL
  7. web登录界面设计_出色的Web界面设计的7条规则
  8. 转录组+微生物组联合解密困扰50年的丛枝菌根共生“自我调节”中枢分子网络机制...
  9. 软件测试 学习之路 DOS常用命令
  10. 计算机软件被删了,电脑软件被我不小心删了怎么处理
  11. 吴恩达机器学习logistic回归作业(python实现)
  12. python docx 合并文档 图片_使用python抓取大量简历文档内数据(word:docx;pdf;图片等)输出表格文件...
  13. CMS垃圾回收器总结
  14. 垃圾分类小程序,云开发 (附源码)
  15. 小白新建C语言程序(VS2019创建C语言编程环境方法详解)
  16. A*算法————传教士和野人
  17. 傲梅备份服务器系统,傲梅轻松备份如何还原系统的详细解析
  18. 人脸识别(Facenet)
  19. 什么是计算机系统性能,什么系统性能好?电脑发烧友告诉你
  20. MySQL及数据库相关

热门文章

  1. Python基础:搭建开发环境(1)
  2. 移动磁盘文件或目录损坏且无法读取资料如何找回
  3. mac上nginx静态页面访问403
  4. error: stray '\343' in program 问题解决
  5. Log4net核心组成
  6. Windows窗口样式
  7. linux自动备份网站和数据库,到另外服务器上,为当前用户创建定时任务
  8. Yeslab现任明教教主ISE课程前七部分免费发布
  9. 数据科学 python_为什么需要以数据科学家的身份学习Python的7大理由
  10. 熊猫数据集_处理熊猫数据框中的列表值