iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python调用dll方法
  • 607
分享到

python调用dll方法

方法pythondll 2023-01-31 01:01:21 607人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

转载自:Http://blog.csdn.net/lf8289/article/details/2322550 在python中调用dll文件中

转载自:Http://blog.csdn.net/lf8289/article/details/2322550

python中调用dll文件中的接口比较简单,实例代码如下:

如我们有一个test.dll文件,内部定义如下:

extern "C"
{

int __stdcall test( void* p, int len)
{
     return len;
}

}

Python中我们可以用以下两种方式载入

1.
import ctypes
dll = ctypes.windll.LoadLibrary( 'test.dll' )

2.
import ctypes
dll = ctypes.WinDll( 'test.dll' )

其中ctypes.windll为ctypes.WinDll类的一个对象,已经在ctypes模块中定义好的。在test.dll中有test接口,可直接用dll调用即可

nRst = dll.test( )
print nRst

由于在test这个接口中需要传递两个参数,一个是void类型的指针,它指向一个缓冲区。一个是该缓冲区的长度。因此我们要获取到python中的字符串的指针和长度

#方法一:
sBuf = 'aaaaaaaaaabbbbbbbbbbbbbb'
pStr = ctypes.c_char_p( )
pStr.value = sBuf
pVoid = ctypes.cast( pStr, ctypes.c_void_p ).value
nRst = dll.test( pVoid, len( pStr.value) )
 
#方法二:
test  = dll.test
test.argtypes = [ctypes.c_char_p, ctypes.c_int]
test.restypes = ctypes.c_int
nRst = test(sBuf, len(sBuf))

如果修改test.dll中接口的定义如下:

extern "C"
{
    int __cdecl test( void* p, int len)
    {
        return len;
    }
}

由于接口中定义的是cdecl格式的调用,所以在python中也需要用相应的类型

1.
import ctypes
dll = ctypes.cdll.LoadLibrary( 'test.dll' )
##注:一般在linux下为test.o文件,同样可以使用如下的方法:
## dll = ctypes.cdll.LoadLibrary('test.o')

2.
import ctypes
dll = ctypes.CDll( 'test.dll' )

--结束END--

本文标题: python调用dll方法

本文链接: https://www.lsjlt.com/news/184308.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python调用dll方法
    转载自:http://blog.csdn.net/lf8289/article/details/2322550 在python中调用dll文件中...
    99+
    2023-01-31
    方法 python dll
  • java-调用dll方法
    java-调用dll方法 前言一、dll调用方法二、调用异常 前言 由于需求需要添加一个USB狗,作为服务的license验证。则Java程序需要和dll进行整合。该USB狗已经提供了J...
    99+
    2023-09-01
    java 开发语言
  • Python调用DLL
    C语言中的函数默认是__cdecl调用,C++中可用__stdcall来显示声明调用,但也可以用extern “C” 用python调用dll时需要根据不同的调用约定而使用不同的函数。但是不管什么调用,最后都必须用extern “C”...
    99+
    2023-01-31
    Python DLL
  • c#调用c++的DLL的实现方法
    目录1.采用托管的方式进行调用,就和正常调用c#的dll一样2.非托管的方式进行调用C#是托管型代码,创建的对象会自动回收。C++是非托管型代码,创建的对象需要手动回收(有时不手动回...
    99+
    2022-11-13
  • Python 调用c#的dll pyth
    1.首先有准备好的c#的dll可供调用。需要本文的dll的自行下载dll2.安装pythonnet 在python的安装路径 Python\Python36-32\Lib\site-packages\pip   下执行 pip insta...
    99+
    2023-01-31
    Python dll pyth
  • python调用dll动态库
    python调用动态库有两种类型,主要看dll的导出函数的调用约定:__stdll和__cdecl 对应的动态库的调用方式为 ctypes.cdll...
    99+
    2023-01-31
    动态 python dll
  • C#使用DLLImport调用外部DLL的方法
    C#.Net调用基本格式: DllImport 属性提供非托管 DLL 函数的调用信息。 [DLLImport(“DLL文件路径”)]修饰符 extern 返...
    99+
    2022-11-13
  • python调用dll文件接口
    转载 在Python中某些时候需要C做效率上的补充,在实...
    99+
    2023-01-31
    接口 文件 python
  • C#调用带结构体指针Dll的方法
    在C#中调用C(C++)类的DLL的时候,有时候C的接口函数包含很多参数,而且有的时候这些参数有可能是个结构体,而且有可能是结构体指针,那么在C#到底该如何安全的调用这样的DLL接口...
    99+
    2022-11-12
  • python调用dll动态链接库
    还是调用动态库,各种调用,但是呢,Python调用dll貌似不麻烦,至少我第一次就调用成功嘞。至于Python,我连语法都不知道,不过问题不大,边百度...
    99+
    2023-01-31
    动态链接库 python dll
  • python调用dll传指针参数
    原文:http://blog.csdn.net/xiuduyi/article/details/39609231 工具:VS2010    python2.7 (若使用的python是64位的,生成的dll也要使用x64) 系统:w...
    99+
    2023-01-31
    指针 参数 python
  • Python调用动态链接库(DLL)
    Python调用动态链接库(DLL) 动态链接库(Dynamic Link Libraries,简称DLL)是一种被多个程序共享的库文件,可以被用于将程序分解为小模块,减少内存占用,加快程序运行速度。...
    99+
    2023-09-03
    python 开发语言
  • java调用相互依赖的dll的处理方法
    目录一、问题描述二、处理办法2.1 类定义2.2 调用三、结语一、问题描述 最近在做一个功能时遇到java需要调用dll,并且dll有依赖关系,之前都是单独调用一个,其实调用dll的...
    99+
    2022-11-13
  • python 使用ctypes调用C/C++ dll详情
    python和C/C++混合编程,推荐使用python的内置模块ctypes,从名字上可以看出是c,可见对C++的支持并不太好。 一般的步骤: 1、导入ctypes模块,加载C/C+...
    99+
    2022-11-10
  • python如何调用dll库中的函数
    在python中使用ctypes模块调用dll库中函数的方法首先,在Python项目中引入ctypes模块;from ctypes import *ctypes模块引入后,在Python中加载dll库;Objdll = ctypes.Win...
    99+
    2022-10-11
  • golang怎么调用dll
    Golang作为编程语言,其强大的并发能力和高效的性能广受开发者的喜爱。在实际开发中,我们可能会涉及到和DLL(dynamic-link library)文件的交互,如何在Golang中调用DLL成为了一个重要问题。本文将介绍Golang如...
    99+
    2023-05-14
  • php使用com调用dll
    本方法只针对windows系统 PHP 5.4.5之后在php.ini中配置以下3项 开启extension=php_com_dotnet.dll(如果没有自己加) 注销disable_classes = COM com.allow_dc...
    99+
    2023-09-03
    php 开发语言
  • python调用易语言编写的dll文件
     目前易语言编写的dll文件都是32位的dll,所以必须用32位的python去调用。     32位的dll必须用32位的python调用,64位的dll必须用64位的python调用。 原因如下:     在64位的windows系统...
    99+
    2023-01-31
    文件 易语言 python
  • java调用相互依赖的dll的处理方法是什么
    这篇文章将为大家详细讲解有关java调用相互依赖的dll的处理方法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、问题描述最近在做一个功能时遇到java需要调用dll,并且dll有依...
    99+
    2023-06-29
  • php怎么调用dll库
    在PHP中调用DLL库,可以使用扩展模块`extension`和`ffi`。 使用extension扩展:首先需要确认PHP是否...
    99+
    2023-10-25
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作