簡體   English   中英

傳遞Python的對象作為函數的參數

[英]Python-passing object as an argument of function

  1. 有一個來自DLL(C語言) link("parameters", &connection);的函數link("parameters", &connection); 它采用字符串參數並初始化連接。

  2. 有一個函數connect(connection) ,其中連接-對象,通過調用link()初始化。

問題:如何通過Python連接對象函數Connect()作為參數?

from ctypes import *
mydll = CDLL (link.dll)
# How define the connection object?
top = link ("localhost: 5412", connection)
top = connect (connection)

我相信winapi句柄是32位長,但是您可能需要確保它是真實的長度。 如果您沒有以其他任何方式使用連接 ,則可以執行以下操作:

connection_t = ctypes.c_uint32

link = mydll.link
link.argtypes=(ctypes.c_char_p, ctypes.POINTER(connection_t) )
connect = mydll.connect
connect.argtypes=(connection_t,)
...
connection = connection_t()
link ("localhost: 5412", ctypes.byref(connection))
...

注意:

  • 您可以使用另一種類型作為與HANDLE等效的不透明對象,只要它具有相同的字節長度即可。 更好的是,您可以通過繼承而不是僅僅通過分配來“保護”您創建的連接 _t類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM