Ошибка возврата значений из C-функции, вызываемой из Python
===========================================================

У меня трудности с кажущейся простой проблемой. Существуют различные функции C, которые мне нужно вызывать из кода Python. В настоящее время я пытаюсь сделать это с помощью ctypes. У меня возникли проблемы с простой примерной реализацией, которую я использую, чтобы убедиться, что все работает, как предполагалось, перед изменением больших кусков существующего кода. Функции C принимают несколько параметров, выполняют различные математические вычисления и затем возвращают двойное значение. Это файл C, который я использую в качестве теста.

В моей реальной тестовой функции я печатаюval1 а такжеval2 чтобы они получали значения. С этим все нормально. Python, который вызывает эту функцию, следующий.

Когда это печатает возвращенный результат, оно обычно выводит большое отрицательное число. Я предполагаю, что мне нужно выполнить какое-то преобразование, прежде чем Python сможет обработать это значение, но я не могу найти ответ на этот вопрос для меня. Я искал вечно, но я не уверен, что я упускаю очевидное или ищу неверную информацию.

Кроме того, если я изменяю тип возвращаемого значения функции на int, вычисления оказываются правильными, а int возвращается и печатается, как и ожидалось. Если я установлю его на удвоение, вычисления верны в коде C (я печатаю их для проверки), но Python не нравится возвращаемый результат.

Есть идеи, что мне не хватает?

Вы должны установить типы аргументов функции и тип возвращаемого значения в Python, используя`argtypes` а также`restype` Участники:

Затем вы можете назвать это так, как вы делаете: создайте массивы типа`(ctypes.c_double * length)` инициализированы вашими значениями, а`result` будет`double`.

Смотрите также это[учебник по типам](http://python.net/crew/theller/ctypes/tutorial.html#arrays)У него есть много полезной информации.