我想在Python中使用SSL庫,我需要編寫一個C++代碼的克隆代碼。通過引用或等效Python調用
在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()method.I沒有訪問具有「通過引用通」
我試圖EVP_MD_CTX_init(ctypes.byref(mdctx)),但語法錯誤調用此方法是用occured.Is有任何方式做這個?
我重新打開了你的問題,因爲我雖然你問的是不是真正的副本[其他問題](http://stackoverflow.com/questions/7530473/ctypes-and-passing-a-by-reference -to-A-功能?LQ = 1)。然後你編輯了這個問題以刪除所有相關的內容,所以實際上仍然是重複的。你爲什麼這麼做? – abarnert 2014-08-27 11:24:37
更重要的一點:你問如何按引用傳遞'ctypes'值C函數,如何通過引用傳遞'ctypes'值Python函數,或者只是如何變異在Python'ctypes'值?它們都是不同的東西,如果你要求其中一個答案,它不會幫助你做其他答案。 – abarnert 2014-08-27 11:25:16
如果您希望我們調試代碼,你必須向我們展示的代碼,你得到的錯誤,不只是含糊地描述你嘗試和發生了什麼事。有一個在表達'EVP_MD_CTX_init(ctypes.byref(mdctx))'沒有語法錯誤,那麼很可能是你嘗試了一些_other_問題,但沒有看到它,我甚至不能開始猜測。這可能是一個缺少')'前行,一個流浪非ASCII字符,或一個百萬的東西。 – abarnert 2014-08-27 12:06:27