目前易語言編寫的dll文件都是32位的dll,因此必須用32位的python去調用。
32位的dll必須用32位的python調用,64位的dll必須用64位的python調用。
緣由以下:
在64位的windows系統中,一個64位進程不能加載一個32位dll,同理一個32位進程也不能加載一個64位dll。
可用解決辦法:
64位windows支持64位和32位進程(包括本機或跨機)間進程間通訊(RPC)。在64位windows中,一個進程外32位COM服務器可以與64位客戶端進行通訊,一樣一個進程外64位COM服務器也能與32位客戶端進行通訊。所以,若是你有一個32位COM沒法識別的DLL,你能夠將它封裝到一個進程外COM服務器中並在一個64位進程中用COM配置調用DLL。
廢話很少說,直接上乾貨:
我建了一個簡單的易語言動態連接庫程序,代碼以下:
可見只有一個函數,而且返回了一串字符。接下來咱們編譯生成一個dll文件用python去調用它。
因爲我編譯的是32位的dll文件,所以我用32位的python去調用它,以下圖:
能夠看到txt是二進制數據,接下來對其解碼。
發現utf8解碼會報錯,咱們再用gbk試試。
發現成功收到數據,是否是很簡單。
注:python執行dll文件中的函數默認返回爲整數型(int),除了string_at外,從types的類型還有: