Как обернуть эту функцию C с несколькими аргументами в ctypes?
У меня есть прототип функции здесь:
extern "C" void __stdcall__declspec(dllexport) ReturnPulse(double*,double*,double*,double*,double*);
Мне нужно написать несколько Python для доступа к этой функции, которая находится в DLL. Я загрузил DLL, но каждый из double* на самом деле указывает на переменное число double (массив), и у меня возникают проблемы с его корректной работой.
Спасибо всем!
2 ответа
Решение
Чтобы сделать массив с, скажем, n
двойники:
arr7 = ctypes.c_double * `n`
x = arr7()
и передать x
к вашей функции, где он хочет double*
, Или если вам нужно инициализировать x
как вы делаете это:
x = arr7(i*0.1 for i in xrange(7))
и тому подобное. Вы можете перебрать x
, индексировать его и так далее.
Я не слишком много смотрел на ctypes, но попробуйте использовать массив numpy правильного типа. Если это не просто автоматически работает, у них также есть атрибут ctypes, который должен содержать указатель на данные.