gpt4 book ai didi

python - 如何在 Python 中模拟使用 ctypes.byref 作为参数之一的 ctypes 函数

转载 作者:太空宇宙 更新时间:2023-11-03 15:06:42 25 4
gpt4 key购买 nike

我正在开发 DLL/SO 的 Python 包装器。我已经验证了代码可以调用实际的 DLL 和 SO。我想对我的包装器进行单元测试,而不需要安装底层 DLL/SO。我正在考虑使用 mock

我遇到的问题是采用 byref 参数并以这种方式返回值的函数。例如,如果 C 基金看起来像这样:

int initialize(char *resource, ulong *new_handle)
{
// Some code here
*new_handle = temp_handle;
return error;
}

Python 代码如下所示:

error_code = library.initialize(resource.encode('ascii'), ctypes.byref(session_handle))

我能够模拟该函数并设置返回值 (error_code),但我无法弄清楚如何设置 session_handle 中返回的值。

这可能吗?如果可能的话,如何实现?

最佳答案

您可以通过返回值的_obj属性访问传递给byref的对象:

x is ctypes.byref(x)._obj

或者至少现在可以。这是一个未记录的 API,可能会发生变化。

获得对象后,您可以通过其 value 属性以通常的 ctypes 方式设置其值:

byref_session_handle._obj.value = whatever

关于python - 如何在 Python 中模拟使用 ctypes.byref 作为参数之一的 ctypes 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44598746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com