Как мне обернуть эту функцию C с несколькими аргументами с помощью ctypes?

StackOverflow https://stackoverflow.com/questions/1381016

Вопрос

У меня есть прототип функции здесь:

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, который должен содержать указатель на данные.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top