1. 怎样用python调用vc++编出来的win32 DLL
1、首选运行工具 makepy.py。
2、这样就可以查看 C# dll的 com导出的 py文件了。 Python编程makepy.py代码如下:
# -*- coding: mbcs -*-
# Created by makepy.py version 0.5.00
# By python version 2.5.4 (r254:67916, Dec 23 2008, 15:10:54)
也可以使用下面的方式:
然后保证你能找到这个dll, 比如在system32下
from ...
windll.aaa 就可以
2. 利用Python脚本语言开发通达信DLL公式
开发通达信DLL公式时,使用C++面临诸多繁琐步骤,如每次编译后需热更新前先解绑,修改代码后也需重新编译,且缺乏调试工具,这无疑降低了开发效率。
对比之下,使用脚本语言如JavaScript、Lua开发通达信公式能实现热更新,大幅提高开发速度。我曾成功利用JavaScript和Lua编写通达信脚本dll。
然而,直接在DLL中运行Python引擎的设想并未实现,原因在于Python执行速度较慢,且32位的通达信与64位Python存在兼容性问题。为解决此问题,我采用绑定Python DLL并编写对应的计算公式,通过Python文件实现公式计算,无需每次重新编译DLL。
首先,绑定Python的DLL,选择9号dll,然后编写公式,利用TDXDLL9函数调用Python中定义的计算逻辑,如FLine1和FLine2。编写对应的Python文件,实现TestPlugin1和TestPlugin2函数,与公式调用一一对应。修改Python文件无需重新编译DLL,操作与普通dll公式相同。
结果表明,使用Python开发通达信DLL公式,不仅效率高、开发便捷,且语法简洁,支持热更新和调用强大库如Numpy、TA-lib,功能丰富。Python作为开发语言,能提供更顺畅的开发体验,降低开发门槛,让股票公式开发工作变得更加轻松。
Python在金融数据处理和算法开发方面展现出了强大的潜力,不仅简化了公式开发流程,还提供了丰富的库支持。对于有兴趣的朋友,欢迎私信交流。
更多信息,可关注公众号:tonyblackwhite
3. python程序怎么编译成dll
python 本身是解释型的语言,如果要把python打包成dll就必需得把python的解释器也打包进去,个人觉得这样做是没有意义的。
静态dll,没有这样的说法,dll的全称是动态链接库
dll加载方式分为静态加载与动态加载,静态加载并不是指将dll打包到exe,而是指在exe一运行就将dll一并载入到内存
4. 我现在想把自己写的python模块源代码封装成dll,然后在别的python脚本里调用,可以吗
可以的,只要把python模块转换成dll模块,利用Python自带的ctypes模块加载调用就行。
ctypes 是Python的外部函数库。它提供了与 C语言兼容的数据类型,并允许调用 DLL 或共享库中的函数。可使用该模块以纯 Python 形式对这些库进行封装。
ctypes导出了cdll对象,在 Windows 系统中还导出了windll和oledll对象用于载入动态链接库。通过操作这些对象的属性,你可以载入外部的动态链接库。cdll载入按标准的cdecl调用协锋滚议导出的函数,而windll导入的库按stdcall调用协议调用其中的函数。
(4)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) 即完成一次调用。
5. python有没有办法能够编译成DLL文件
通用情况下,没有什么好办法能把python编译成dll,因为python是解释型语言,dll是编译后的二进制文件,2者不在一个次元。除非你把python的解释器也打包进你的工程,并在你的exe里调用。
但某些特殊情况下,也有把python的代码编译成dll文件的方法,在.net环境下,可以用IronPython这个工具,它可以把python代码编译成dll。
6. python里面如何释放DLL文件
调用dll的代码采用如下顺序:
dll = CDLL(dllPath)
update_out = UpdateParamStruct()
dll.SeUpdaterGetParam(case.updateType, byref(update_out))
win32api.FreeLibrary(dll._handle)
这样就可以在执行完后,dll文件不会处于占用的状态了~