1 回答

TA貢獻1785條經(jīng)驗 獲得超8個贊
出現(xiàn)問題的常見原因ctypes是沒有定義.argtypes和.restype調(diào)用函數(shù)。特別是,返回類型默認為 an c_int(通常為 32 位),在 64 位系統(tǒng)上,您的函數(shù)將返回 64 位指針。
import ctypes as c
class LIB_OPTIONS(c.Structure):
"""Struct containing the available options for the library"""
_fields_ = [('ip', c.c_char * 255),
('bufsize_MB', c.c_int)]
c_lib = c.CDLL('./test')
c_lib.lib_internal_obj_new.argtypes = c.POINTER(LIB_OPTIONS), # 1-tuple declaring input parameter
c_lib.lib_internal_obj_new.restype = c.c_void_p # generic pointer
lib_opts = LIB_OPTIONS(b'192.168.1.1',2)
lib_object = c_lib.lib_internal_obj_new(c.byref(lib_opts))
添加回答
舉報