【问题标题】:Python-passing object as an argument of functionPython 传递对象作为函数的参数
【发布时间】:2012-04-20 14:31:41
【问题描述】:
  1. 有来自 DLL(C 语言)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)

【问题讨论】:

  • C中连接参数的类型是什么?
  • 连接它是winapi HANDLE到对象

标签: python object dll ctypes


【解决方案1】:

我相信 winapi 句柄是 32 位长,但您可能需要确保它是真实长度。如果您没有以任何其他方式使用 connection,也许您可​​以这样做:

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 等效的不透明类型,只要它具有相同的字节长度即可。更好的是,您可以通过继承而不是仅仅分配来“保护”您创建的 connection_t 类型。

【讨论】:

    猜你喜欢
    • 2017-06-04
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 2018-02-23
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多