当前位置:首页 » 编程软件 » python编译为dll

python编译为dll

发布时间: 2025-08-14 15:43:40

python的ctypes可以调用c++编译生成的dll文件中的类函数吗

可以的,python中一般有两种方法调用DLL中的函数。
1.直接使用函数名,函数名可以用dependency walker等工具查看。(这个工具在vc或者vs的工具包中)

[python] view plain
import ctypes
dll = CTYPES.CDLL("test.dll")
res = test(3, 4)

2.使用Ordinal,Ordinal可以用dependency walker等工具查看。
[python] view plain
import ctypes
dll = CTYPES.CDLL("test.dll")
res = dll[1](3, 4)

为了方便查询啊,你还可以下载一个LORDPE,这是一个逆向PE分析工具,可以方便的查到需要的信息。。

㈡ 我现在想把自己写的python模块源代码封装成dll,然后在别的python脚本里调用,可以吗

可以的,只要把python模块转换成dll模块,利用Python自带的ctypes模块加载调用就行。

ctypes 是Python的外部函数库。它提供了与 c语言兼容的数据类型,并允许调用 DLL 或共享库中的函数。可使用该模块以纯 Python 形式对这些库进行封装。

ctypes导出了cdll对象,在 Windows 系统中还导出了windll和oledll对象用于载入动态链接库。通过操作这些对象的属性,你可以载入外部的动态链接库。cdll载入按标准的cdecl调用协议导出的函数,而windll导入的库按stdcall调用协议调用其中的函数。

(2)python编译为dll扩展阅读:

加载调用DLL的相关方法:

1、加载DLL

加载的时候要根据你将要调用的函数是符合什么调用约定的。

stdcall调用约定:两种加载方式

Objdll = ctypes.windll.LoadLibrary("dllpath")

Objdll = ctypes.WinDLL("dllpath")

cdecl调用约定:也有两种加载方式

Objdll = ctypes.cdll.LoadLibrary("dllpath")

Objdll = ctypes.CDLL("dllpath")

其实windll和cdll分别是WinDLL类和CDll类的对象。

2、调用dll中的方法

加载dll的时候会返回一个DLL对象(假设名字叫Objdll),利用该对象就可以调用dll中的方法。 e.g.如果dll中有个方法名字叫Add(注意如果经过stdcall声明的方法,如果不是用def文件声明的导出函数或者extern “C” 声明的话,编译器会对函数名进行修改,这个要注意。)

调用:nRet = Objdll.Add(12, 15) 即完成一次调用。

㈢ Windows下如何在python中调用c语言程序编译的dll

这个dll可能是用borland公司的编译器编译出来的。 或者这个dll可能不是在你本机上编译的,如果你有这个dll的源码,可以编译一下,然后放到脚本同一目录下,再试试。

㈣ python有没有办法能够编译成DLL文件

pypy是用python实现的python,区别于cPython,和C没什么关系,你要用python写C,需要的是Cython。具体看文档,没那么难。

热点内容
国家开放大学默认密码是多少 发布:2025-08-14 17:46:04 浏览:458
sql拼接sql 发布:2025-08-14 17:46:01 浏览:144
c语言实现的万年历 发布:2025-08-14 17:37:58 浏览:947
我的世界网易服务器老是崩溃怎么办 发布:2025-08-14 17:32:50 浏览:149
小米路由存储分享 发布:2025-08-14 17:32:48 浏览:244
a3服务器ip地址连接不了 发布:2025-08-14 17:19:58 浏览:809
mac查看系统文件夹 发布:2025-08-14 17:17:56 浏览:341
代码段加密 发布:2025-08-14 17:06:30 浏览:959
我的世界嗨皮服务器怎么关服了 发布:2025-08-14 16:48:55 浏览:420
怎么可以修改手机配置 发布:2025-08-14 16:44:09 浏览:311