将python数组传递给c++;使用ctypes的函数 我对这种扩展仍然是新手(虽然我有一个C++和Python的好背景) < >我想使用cType模块将数据传递给C++函数。 迄今为止对我有效的例子:

将python数组传递给c++;使用ctypes的函数 我对这种扩展仍然是新手(虽然我有一个C++和Python的好背景) < >我想使用cType模块将数据传递给C++函数。 迄今为止对我有效的例子:,c++,python,ctypes,C++,Python,Ctypes,test.dll文件 #define DLLEXPORT extern "C" __declspec(dllexport) DLLEXPORT int sum(int a, int b) { return a + b; } sum_test.py文件: from ctypes import cdll mydll = cdll.LoadLibrary('test.dll') mydll.sum(5, 3) 结果是8,效果很好 注: 我用这个来开发一个用于搅拌器的插件(插件),我将传递

test.dll文件

#define DLLEXPORT extern "C" __declspec(dllexport)

DLLEXPORT int sum(int a, int b) {
    return a + b;
}
sum_test.py文件:

from ctypes import cdll
mydll = cdll.LoadLibrary('test.dll')
mydll.sum(5, 3)
结果是8,效果很好

注: 我用这个来开发一个用于搅拌器的插件(插件),我将传递给C++函数的数据是一个巨大的数组(元组或任何类型的数组),这些数据将被传递给GPU,用OpenCL

处理它。

主要是C++中的工作流传递指针(将整个数组数据复制到GPU)

因此,问题是:
在C++中获得元组指针的最好方法(最快的方法)(希望解释Python和C++中发生的事情)

最简单的方法是告诉cType函数使用一个特定类型的数组的指针,在很多情况下Python/cType会找出其余的。p>

libc = CDLL('libc.so.6') # on Debian/Linux
printf = libc.printf
printf.restype = c_int
printf.argtypes = [POINTER(c_char), c_int]
printf('< %08x >', 1234)
Debian/Linux上的libc=CDLL('libc.so.6')# printf=libc.printf printf.restype=c_int printf.argtypes=[指针(c_char),c_int] printf(“<%08x>”,1234) 这假设函数只接受一个指针。例如,如果您的函数正好使用五个浮点,则可以根据参数类型提供
c_float*5