gpt4 book ai didi

Python 通过引用或等效调用

转载 作者:行者123 更新时间:2023-11-28 22:48:05 25 4
gpt4 key购买 nike

我正在尝试在 Python 中使用 SSL 库,我需要编写 C++ 代码的克隆代码。

在 C 中,SSL 函数是这样调用的:

EVP_MD_CTX mdctx;
EVP_MD_CTX_init(&mdctx)

在 Python 中我到达了 SSL 库:

import ctypes
import ctypes.util
import platform
from os import linesep

libraries = {}

libraries["c"] = ctypes.CDLL(ctypes.util.find_library("c"))

if platform.system() != "Windows":
libraries["ssl"] = ctypes.CDLL(ctypes.util.find_library("ssl"))
else:
libraries["ssl"] = ctypes.CDLL(ctypes.util.find_library("libeay32"))

EVP_MD_CTX_init = libraries['ssl'].EVP_MD_CTX_init
EVP_MD_CTX_init.restype = ctypes.c_void_p
EVP_MD_CTX_init.argtypes = [ctypes.c_void_p]

取自here

我如何通过引用传递 EVP_MD_CTX_init 函数,因为它是用 C 编写的?由于我无权访问 EVP_MD_CTX_init() 方法。我必须使用“按引用传递”调用此方法

我尝试了 EVP_MD_CTX_init(ctypes.byref(mdctx)) 但出现语法错误。有什么办法可以做到这一点吗?

最佳答案

您应该查阅 ctypes documentation .

方法是使用 ctypes 模块导出的 byref()pointer() (更慢更复杂)函数,如示例所示。

>>> print ctypes.byref.__doc__
byref(C instance[, offset=0]) -> byref-object
Return a pointer lookalike to a C instance, only usable
as function argument

关于Python 通过引用或等效调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25522745/

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