Re: [問題] 關於Python呼叫dll
※ 引述《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
推
06/02 21:20, , 1F
06/02 21:20, 1F
→
06/02 21:22, , 2F
06/02 21:22, 2F
→
06/02 21:22, , 3F
06/02 21:22, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Python 近期熱門文章
PTT數位生活區 即時熱門文章