pythondll指针(怎样用python调用dll)

1.怎样用python调用dll

可以的,python中一般有两种方法调用DLL中的函数。

1.直接使用函数名,函数名可以用dependencywalker等工具查看。(这个工具在vc或者vs的工具包中)[python]=CTYPES.CDLL("test.dll")res=test(3,4)2.使用Ordinal,Ordinal可以用dependencywalker等工具查看。

[python]=CTYPES.CDLL("test.dll")res=dll[1](3,4)。

2.请教关于dll 函数指针的操作问题

涉及指针的函数我觉得可以用啊……

dll头文件的写法你问的是不是类似这样:

in xxx.h:

#ifdef XXX_INTERNAL

#define XXXEXTERN __declspec(dllexport)

#else

#define XXXEXTERN __declspec(dllimport)

#endif

#ifdef __cplusplus

#extern "C" {

#endif

XXXEXTERN int __cdecl XXXPrintf(const char *,。);

#ifdef __cplusplus

} /* extern "C" */

#endifin xxx.c(if your code is written in C):

#define XXX_INTERNAL

#include "xxx.h"

XXXEXTERN int __cdecl XXXPrintf(const char * str,。)

{

//hello world

}

3.python 调用DLL的问题

那就是有内存泄露。内存没有释放。原因可能是多种。一种是你的DLL或者是AntiVC出了错。另外一种是ctypes出错。其中返回的内容没有释放内存。也许只有10个字节,但是长期积累还是很可观。

如果解决这个问题,就是稳定的程序,怎么用都不会坏。

还有一个保守的办法。如果你调用DLL的频率不是特别快。比如每秒不超过2000次。那么你可以将这个功能封装在一个服务进程里。线程再通过接口去访问。该 服务进程即使内存溢出崩溃了。也会自动重新启动。这样你的20个线程基本上只需要重试几次,等服务进程重新启动完成后,就可以获得结果。基本不影响使用。操作系统也很安全。因为进程退出后,所有的遗留错误都会清空。

4.python调用dll中的函数时报错

似乎代码里没有看到你没有加载DLL啊。

另外你在c里直接改写python的内存可能不太妥当。通常是在C里构造后,再返回到python里去。

从你的程序上看,调用完Thin后,你的变量p似乎变成了空指针。

ctypes调用DLL通常都是别人做好的DLL,没有办法才自己去调用。这里有好多麻烦事情。

如果是自己写代码,通常会建议你用cython这个模块。很容易就实现接口。你也不用担心这些变量类型与接口封装的问题。

另外我印象中dll似乎与编译器也有关系。用VC可能容易些。用BC,或者是GCC就麻烦些。

另外还有版本的问题,64位与32位不能通用。

原则上讲,你这种用法,也不是不可以,可能还是哪个地方没有弄对。比如编译参数。你可以试试用return type把数据带回来。而不是用指针写内存。

因为p目前按理它是常量,很有可能调用机制中,不会让你改写它。

pythondll指针

转载请注明出处代码入门网 » pythondll指针(怎样用python调用dll)

资讯

python日志统计(python有没有通用的日志统计系统)

阅读(11)

本文主要为您介绍python日志统计,内容包括python有没有通用的日志统计系统,如何用python,每隔5分钟对实时日志做统计处理,如何用python分析网站日志。logging模块import logging# 配置日志,输出到控制台logging.basicConfig(level=loggin

资讯

pythonmultiply(Python实现输出1*2*3*4*5)

阅读(15)

本文主要为您介绍pythonmultiply,内容包括python中的multiply函数怎么用,numpy中multiply函数怎么用,Python实现输出1*2*3*4*5100的和。究竟是和还是积呢?如果是积的话,我们设计的代码如下,有注释multi_num = 1 # 乘法结果初始化for i in rang

资讯

pythongui界面(python图形化界面设计tkinter)

阅读(16)

本文主要为您介绍pythongui界面,内容包括python图形化界面设计tkinter,python编写gui界面,pythongui图形界面。python提供了多个图形开发界面的库,几个常用Python GUI库如下:Tkinter: Tkinter模块("Tk 接口")是Py

资讯

pythonintellij(intellijidea怎么编写python程序打包发送到spark)

阅读(18)

本文主要为您介绍pythonintellij,内容包括如何使用intellijidea编写python,intellij可以跑python吗,如何使用idea开发python。,客户端和虚拟集群中hadoop、spark、scala的安装目录是一致的,这样开发的spark应用程序的时候不需要打包spark开发

资讯

pythonimagegrab(Python程序抓图怎么用程序实现截图)

阅读(14)

本文主要为您介绍pythonimagegrab,内容包括Python程序抓图怎么用程序实现截图,如何添加一个截图来诱惑报告Python,python中有哪个库提供了对屏幕截屏功能的。由于在我的一个程序中想要添加一个截图功能,今天看一下利用Python怎样截图,功能实

资讯

pythonwebdriverapi(如何查看pythonselenium的api)

阅读(16)

本文主要为您介绍pythonwebdriverapi,内容包括如何查看pythonselenium的api,如何查看pythonselenium的api,seleniumapi有什么用。经常发现很多同学装好了python+selenium webdriver开发环境后不知道怎么去查看api文档,在这里乙醇简单介绍一

资讯

pythonhtmltable(用python生成在html中显示的表格)

阅读(20)

本文主要为您介绍pythonhtmltable,内容包括用python生成在html中显示的表格,怎么用python编写得到本地网页html中的表格,如何用python获取最简单的一个html表单。可以通过写python脚本制作HTML的form,包括HTML的标签什么的python 有个第三方

资讯

python编写应用程序(怎么用python开发一个应用)

阅读(11)

本文主要为您介绍python编写应用程序,内容包括如何用Python编写应用程序,怎么用python开发一个应用,如何用Python编写应用程序。系统编程:提供API,能方便进行系统维护和管理,Linux下标志性语言之一,是很多系统管理员理想的编程工具。 图形处理:

资讯

python写入二进制(Python:如何写入指定大小二进制数据)

阅读(14)

本文主要为您介绍python写入二进制,内容包括Python:如何写入指定大小二进制数据例如,每次写入1KB,如何进行追加二进制文件python,如何用python生成和读取二进制文件。用"*"和\xNN. 例子:写入1024个二进制值0x00:file(a.bin,wb).write(\x00*10

资讯

python中from(python中fromtimeimportsleep是什么意思)

阅读(10)

本文主要为您介绍python中from,内容包括Python的fromimport和import的区别,python中fromstring怎么用,python中fromstring怎么用。from time import sleep就是从 time 模块中引入sleep函数,使用sleep函数可以让程序休眠(推迟调用线程的

资讯

pythondll结构体(c结构体怎么用python写)

阅读(15)

本文主要为您介绍pythondll结构体,内容包括c结构体怎么用python写,python怎么构造一个结构体,python怎么导入ctypes。C封装了一个Dll,名为SpjMatlabTest.dll,暴露实现: typedef struct{ double *Min; dou

资讯

python函数指针参数(python函数的几种参数类型)

阅读(21)

本文主要为您介绍python函数指针参数,内容包括怎么在python调用C函数的时候实现指针参数,Python如何使用函数指针,怎么在python调用C函数的时候实现指针参数。#Python 2.5 #这个可以用修饰器来完成 #但是一般不会限制参数类型 #给你个思路:

资讯

python返回指针(pythonctypes怎么处理函数返回的一般指针)

阅读(19)

本文主要为您介绍python返回指针,内容包括python使用C函数返回的指针,pythonctypes怎么处理函数返回的一般指针,回调函数指针在python中怎么用。test.c(动态库源代码)[cpp] view plain copy// 编译生成动态库: gcc -g -fPIC -shared

资讯

python结构体指针(python如何传递给c++一个结构体指针)

阅读(19)

本文主要为您介绍python结构体指针,内容包括python如何传递给c++一个结构体指针前提是swig封装的C++函数,,python怎么使用指针,python怎么构造一个结构体。在封装的代码间传递指针你要确保他们运行在相同的地址空间里,还要保证指针指向的内

资讯

python调用c指针

阅读(35)

本文主要为您介绍python调用c指针,内容包括怎么在python调用C函数的时候实现指针参数,怎么在python调用C函数的时候实现指针参数,python使用C函数返回的指针。class stdata(Structure):_fields_ = [(pBuf, c_char_p), (buflen, c_int

资讯

python3.4爬虫入门(如何入门Python爬虫)

阅读(1)

本文主要为您介绍python3.4爬虫入门,内容包括如何入门Python爬虫,python爬虫入门需要哪些基础,python爬虫自学要多久。可以先从简单的开始,在熟悉了Python语法后,学习用 urllib 和 urllib2 爬虫,使用 BeautifulSoup 分析结

资讯

python3好书(python三本经典书籍都是什么)

阅读(1)

本文主要为您介绍python3好书,内容包括python三本经典书籍都是什么,学习python3都好的书,求本适合学习python3.2的书或者电子版资料。python三本经典书籍有:《深度学习入门:基于Python的理论与实现》,《Python高性能(第2版)》,《Python科学计算最

资讯

python判定整数(怎样用python判断整数)

阅读(2)

本文主要为您介绍python判定整数,内容包括python怎么判断一个数是整数,python判断一个数是不是整数,python判断一个数是不是整数。import typesif type(var) in [types.IntType,types.LongType]: bodyelse

资讯

python画仪表(如何使用Python在屏幕上作画)

阅读(2)

本文主要为您介绍python画仪表,内容包括如何用python绘制各种图形,如何用Python绘制Circos图,如何使用Python在屏幕上作画。from turtle import *def curvemove():for i in range(200):right(1)forw

资讯

python写入文件编码格式(python2.7.4怎么指定格式编码的文本)

阅读(1)

本文主要为您介绍python写入文件编码格式,内容包括python写文件怎么写gbk编码的文件,python2.7.4怎么指定格式编码的文本,python2.7.4怎么指定格式编码的文本。要写入的数据本身就是byte串(u中文是中文字符串,中文是byte串),用二进制方式打开就

资讯

python小数点保留1位(如何在Python中保留小数)

阅读(2)

本文主要为您介绍python小数点保留1位,内容包括如何在Python中保留小数,Python中小数点的问题,怎么放弃后面位数,只保留前面两位搜狗,python中保留几位小数进行四舍五入的round函数自身的源代码是什么。f = lambda x, n: round(x, n - len(