gpt4 book ai didi

Python调用C的全局变量

转载 作者:太空宇宙 更新时间:2023-11-04 03:16:34 26 4
gpt4 key购买 nike

我想在python中访问c的全局变量。在制作 .so 文件后,我已经可以使用 ctypes 在 python 中使用/访问 c 的功能。这是 C 代码:

#include <stdio.h>

int globalVar = 2;

void add_int(int num1,int num2){
globalVar = num1+num2;
fprintf(globalVar, "%d\n", );
}

float add_float(float num1,float num2){
return num1+num2;
}

和 Python 代码:

from ctypes import *

adder = CDLL('/home/akshay/Desktop/ffmpeg/linking/addr.so')

adder.add_int(4,5)

var = c_int.in_dll(adder,"globalVar")
print "Sum of 4 and 5 = " + str(adder.add_int(4,5))

a = c_float(5.5)
b = c_float(4.1)

add_float = adder.add_float
add_float.restype = c_float
print "Sum of 5.5 and 4.1 = ", str(add_float(a, b))

最佳答案

给定一个 Windows DLL 的单行源代码:

__declspec(dllexport) int test = 5;

您可以使用 ctypes 类型的 .in_dll() 方法访问全局变量,该方法采用 ctypes DLL 引用和全局变量的名称:

>>> from ctypes import *
>>> dll = CDLL('test') # test.dll of the above source.
>>> c_int.in_dll(dll,'test')
c_long(5)

关于Python调用C的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50949186/

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