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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我现在想把自己写的python模块源代码封装成dll,然后在别的python脚本里调用,可以吗?相关的知识,希望对你有一定的参考价值。

参考技术A

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

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

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

扩展资料:

加载调用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) 即完成一次调用。 

参考资料来源:百度百科-ctypes

如何将自己写的verilog模块封装成IP核

参考技术A 将你的设计制作成blackbox,也就是网表文件,这样别人看不到你的设计但是可以调用你的模块了。
blackbox只是普通网表而已。xst的综合结果就可以直接作为blackbox使用。
通常blackbox外部还会连接其他逻辑,所以blackbox中一般不插入iobuf。在xst属性中去除insert
io
buffer的选项。

以上是关于我现在想把自己写的python模块源代码封装成dll,然后在别的python脚本里调用,可以吗?的主要内容,如果未能解决你的问题,请参考以下文章

将自己写的HDL代码封装成带AXI总线的IP

ISE中如何将自己的verilog源代码.v或VHDL源代码.vhd封装打包成IP核?

Python将自己写的模块进行打包

python中怎么import自己写的模块

Python | 图片转pdf

python中的多类分类