① python運行導出DLL函數.問題,怎麼解決
通常是在C里構造後,再返回到python里去。
從你的程序上看,調用完Thin後,你的變數p似乎變成了空指針。
ctypes調用DLL通常都是別人做好的DLL,沒有辦法才自己去調用。這里有好多麻煩事情。
如果是自己寫代碼,通常會建議你用cython這個模塊。很容易就實現介面。你也不用擔心這些變數類型與介面封裝的問題。
另外我印象中dll似乎與編譯器也有關系。用VC可能容易些。用BC,或者是GCC就麻煩些。
另外還有版本的問題,64位與32位不能通用。
原則上講,你這種用法,也不是不可以,可能還是哪個地方沒有弄對。比如編譯參數。你可以試試用return type把數據帶回來。而不是用指針寫內存。
因為p目前按理它是常量,很有可能調用機制中,不會讓你改寫它。
② python 調用DLL的問題
那就是有內存泄露。內存沒有釋放。原因可能是多種。一種是你的DLL或者是AntiVC出了錯。另外一種是ctypes出錯。其中返回的內容沒有釋放內存。也許只有10個位元組,但是長期積累還是很可觀。
如果解決這個問題,就是穩定的程序,怎麼用都不會壞。
還有一個保守的辦法。如果你調用DLL的頻率不是特別快。比如每秒不超過2000次。那麼你可以將這個功能封裝在一個服務進程里。線程再通過介面去訪問。該 服務進程即使內存溢出崩潰了。也會自動重新啟動。這樣你的20個線程基本上只需要重試幾次,等服務進程重新啟動完成後,就可以獲得結果。基本不影響使用。操作系統也很安全。因為進程退出後,所有的遺留錯誤都會清空。
③ tradex.dll過期
找到正確的DLL文件並將它拷貝到適當的目錄下。
你可在其他電腦上找到正確的DLL文件並將它拷貝到適當的目錄下,程序就能正確運行。DLL可在「C:Windows」目錄「C:WindowsSystem32」目錄和程序的安裝目錄中找到。如果啟動的程序帶有一個過期的DLL文件或不匹配的DLL文件,則會出現「未定義的動態鏈接調用」消息。
④ python調dll里的類,例如dll中有類cobject,類方法add,怎麼調這個類方法呢
首先要把類操作用c語言包裝一遍,再用python的API包裝一個模塊出來(以上兩個都是c,不是c++),編譯的時候編譯成特殊的動態鏈接庫,在python裡面import當成普通模塊調用
具體太復雜,自己找教程和api吧
⑤ tradex.dll是什麼東西
DLL文件是動態鏈接庫,這種庫包含了可由多個程序同時使用的代碼和數據。
並且從文件名是無法判斷這個DLL是什麼東西的。
⑥ 怎樣用python調用dll
可以的,python中一般有兩種方法調用DLL中的函數。1.直接使用函數名,函數名可以用dependencywalker等工具查看。(這個工具在vc或者vs的工具包中)[python]viewplainimportctypesdll=CTYPES.CDLL("test.dll")res=test(3,4)2.使用Ordinal,Ordinal可以用dependencywalker等工具查看。[python]viewplainimportctypesdll=CTYPES.CDLL("test.dll")res=dll[1](3,4)