为什么我有这个简单的代码
void voidFunct() {
printf("voidFunct called!!!\n");
}
我将其编译为动态库
gcc -c LSB.c -o LSB.o
gcc -shared -Wl -o libLSB.so.1 LSB.o
我使用ctypes从python解释器中调用函数
>>> from ctypes import *
>>> dll = CDLL("./libLSB.so.1")
>>> return = dll.voidFunct()
voidFunct called!!!
>>> print return
17
为什么从
void
方法返回的值是17
而不是None
或类似的值?谢谢你。 最佳答案
从文档中:
简而言之,您将voidFunct()定义为返回int
而不是void的函数,Python希望它返回int
(无论如何,它都会得到None
,它恰好是一个随机值)。
您可能应该做的是显式声明ojit_code的返回值类型。
dll.voidFunct.restype = None
关于Python ctypes返回值问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6073599/