Как мне обернуть эту функцию C с несколькими аргументами с помощью ctypes?
Вопрос
У меня есть прототип функции здесь:
extern "C" void __stdcall__declspec(dllexport) ReturnPulse(double*,double*,double*,double*,double*);
Мне нужно написать какой-нибудь python для доступа к этой функции, которая находится в DLL.Я загрузил DLL, но каждый из double * на самом деле указывает на переменное количество двойников (массив), и У меня возникли проблемы с тем, чтобы заставить его функционировать должным образом.
Спасибо всем!
Решение
Чтобы создать массив с помощью, скажем, 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, который должен содержать указатель на данные.