看板 Python 關於我們 聯絡資訊
※ 引述《hl4 (Minimi)》之銘言: : 以下是dll的interface : SetBrowseCallback(CALLBACK pFunc, DWORD dwIdentifier, DWORD dwExtData); : BrowseServer() : pFunc是BrowseServer()所需要的callback function : pFunc的prototype大致如下 : (LPTSTR sServerName, LPTSTR sServerIP, LPTSTR sServerVersion, : LPTSTR sServerType, LPTSTR sServerMAC, DWORD dwIdentifier, DWORD dwExtData) : 我呼叫的方式如下: : dll = ctypes.CDLL("Server.dll") : sbc = dll.SetBrowseCallback : sbc.restype = None : callback_proto = ctypes.PYFUNCTYPE( None, ctypes.c_char_p, ctypes.c_char_p, : ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p, DWORD, DWORD) : callback = callback_proto(py_callback) #py_callback print所有參數 : sbc(callback) : dll.BrowseServer() : 雖然沒有error但是我的callback function完全沒被用到 : 想請問可能是哪部分的問題應該要怎麼解決,謝謝 都沒有 error? 先檢查一下 SetBrowseCallback 的 calling convention 是 c call 還是 std call(WINAPI, __stdcall, __pascal),如果是後者,調用 SetBrowseCallback 的部分要修改成 dll = ctypes.WINDLL("Server.dll") sbc = dll.SetBrowseCallback 確定 CALLBACK 的 calling convention,如果是 std call: callback_proto = ctypes.WINFUNCTYPE(...) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.130.72
hl4:雖然細節上還不是很瞭解,但是我試著去換得結果是sbc(callback 06/02 21:20
hl4:產生error:...probably called with too many arguments 06/02 21:22
hl4:(4 bytes in excess) 06/02 21:22