Python—为什么不能更改C回调函数中的值?
我尝试使用PythonCType调用C库(.so),这个C库有回调函数。 C源代码:Python—为什么不能更改C回调函数中的值?,python,ctypes,Python,Ctypes,我尝试使用PythonCType调用C库(.so),这个C库有回调函数。 C源代码: 打印结果为: boo=4 Outfunc=1025 ret=55 看起来还不错 生成文件源: gcc -c -fPIC -Wno-format-security -g main.c gcc -shared -o libcall.so main.o gcc main.o -o callback -ldl -lpthread -lrt 然后,我尝试使用PythonCType调用“BSP_SHOW”这个函数
打印结果为:
boo=4
Outfunc=1025
ret=55
看起来还不错
生成文件源:
gcc -c -fPIC -Wno-format-security -g main.c
gcc -shared -o libcall.so main.o
gcc main.o -o callback -ldl -lpthread -lrt
然后,我尝试使用PythonCType调用“BSP_SHOW”这个函数,并将回调函数放入这个函数中。 Python源代码: Python版本:2.6.6
打印结果为
cb=4
Outfunc=4 <---I expect it should be 1025,but not!
ret=88 <---return value have been change by python callback.
cb=4
outpunc=4运算符在python中重新分配变量。换句话说,您可以更改变量的含义
您需要更改变量指向的对象。由于它是一个ctypes指针,因此需要使用0对其进行索引才能执行此操作
def qa_callback(result):
result[0] = 1025
return 88
def qa_回调(结果):
结果[0]=1025
返回88
注意结果后面的[0]
另请参见:Python 2.6.6版请帮助我!如果有人知道?!
cb=4
Outfunc=4 <---I expect it should be 1025,but not!
ret=88 <---return value have been change by python callback.
def qa_callback(result):
result[0] = 1025
return 88