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文件不會處於佔用的狀態了~