2009-09-04 3 views
0

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

extern "C" void __stdcall__declspec(dllexport) ReturnPulse(double*,double*,double*,double*,double*); 

Мне нужно написать несколько питона доступа к этой функции, которая находится в DLL. Я загрузил DLL, но каждый из двух * фактически указывает на переменное число парных разрядов (массив) и У меня возникли проблемы с его правильной работой.

Спасибо всем!

ответ

1

Чтобы сделать массив, скажем, n двойников:

arr7 = ctypes.c_double * `n` 
x = arr7() 

и передать x к вашей функции, где она хочет double*. Или, если вам нужно инициализировать x, как вы сделаете это:

x = arr7(i*0.1 for i in xrange(7)) 

и тому подобное. Вы можете перебрать x, индексировать его и т. Д.

+0

Awesome! Благодаря! – trayres

+0

Добро пожаловать; если этот ответ окажется решением вашей проблемы, не забудьте принять его (используйте значок галочки под номером, в котором указывается число голосов для ответа), это основной этический знак. –

+0

А, еще раз спасибо! – trayres

1

Я не слишком много смотрел на ctypes, но попробуйте использовать массив numpy правильного типа. Если это не просто автоматически работает, они также имеют атрибут ctypes, который должен содержать указатель на данные.

Смежные вопросы