为什么我有这个简单的代码

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/

10-13 09:30