当参数数量正确时,ctypes返回太多参数错误

时间:2019-04-21 11:53:42

标签: python ctypes

我在c中创建了一个简单的c函数,称为“加”,它将两个长整数加在一起。源代码:

long long add(long long a, long long b){
    return a+b;
}

我正尝试在python中使用ctypes包装器使用该函数,但它拒绝正常工作:

import ctypes

add = ctypes.windll.LoadLibrary("main.dll").add
add.restype = ctypes.c_longlong
add.argtypes = [ctypes.c_longlong, ctypes.c_longlong]
add(ctypes.c_longlong(12), ctypes.c_longlong(12))

它返回:

ValueError: Procedure probably called with too many arguments (16 bytes in excess)

注意:c编译器是带有参数的gcc

gcc -c -Wall -Werror -x c -fpic main.cpp
gcc -shared -o main.dll main.o

python编译器是cpython版本3.7 32位 架构是Intel Core i5-8500 操作系统是Windows 10

0 个答案:

没有答案