Как обернуть эту функцию 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, который должен содержать указатель на данные.

Другие вопросы по тегам