Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中设置c_char_p_Python_Pointers_Header Files_Ctypes - Fatal编程技术网

在Python中设置c_char_p

在Python中设置c_char_p,python,pointers,header-files,ctypes,Python,Pointers,Header Files,Ctypes,在C头文件中,我有: long test_API callAndSave( ___OUT_ char param1[31], ___OUT_ char param2[5], ___OUT_ char param3[21], ___OUT_ char* pointerParam ); 我正在尝试设置并传递Python中的所有参数,并将它们传递给callAndSave: import ctypes from ctypes import * lib

在C头文件中,我有:

long test_API callAndSave(   
    ___OUT_ char param1[31], 
    ___OUT_ char param2[5], 
    ___OUT_ char param3[21], 
    ___OUT_ char* pointerParam
    );
我正在尝试设置并传递
Python
中的所有参数,并将它们传递给
callAndSave

import ctypes
from ctypes import *
lib = cdll.LoadLibrary('./testlib.so')

param1 = (ctypes.c_char*31)()
param2 = (ctypes.c_char*5)()
param3 = (ctypes.c_char*21)()
pointerParam = ctypes.c_char_p()

lib.eftTrx(param1,param2,param3,pointerParam)
但是我得到了
pointerParam
的“
输出参数为NULL
”错误。我应该如何在Python中正确定义“
”字符*pointerParam

___OUT_ char* pointerParam
规范中的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
通常意味着该指针将写入数据。因此,您必须分配一个要写入的缓冲区
ctypes.c\u char\u p()
不构成缓冲区-它只是一个空指针

调查。您必须计算出
callAndSave
需要多大的缓冲区