Я написал простую функцию в C, которая поднимает заданное число до заданной степени. Функция возвращает правильное значение, когда я вызываю ее в C, но когда я вызываю ее в Python, она возвращает другое неправильное значение.
Я создал общий файл с помощью команды: $ gcc -fPIC -shared -o test.so test.c
Я пробовал разные конфигурации функции C, некоторые из которых возвращают ожидаемое значение, а некоторые нет. Например, когда моя функция представляет собой простой квадрат с использованием return x*x
, без цикла for
, она возвращает правильное значение в Python.
Я надеюсь, что в конечном итоге смогу вызвать функцию C в Python, которая будетвернуть двумерный массив C.
#include <stdio.h>
float power(float x, int exponent)
{
float val = x;
for(int i=1; i<exponent; i++){
val = val*x;
}
return val;
}
from ctypes import *
so_file = '/Users/.../test.so'
functions = CDLL(so_file)
functions.power.argtype = [c_float, c_int]
functions.power.restype = c_float
print(functions.power(5,3))
Я получаю ожидаемый результат 125.0, когда я вызываю функцию в C, но когда я вызываю функцию в python, она возвращает значение 0.0.
Я впервые использую ctypes. Я допустил явную ошибку, которая вызывает неправильный расчет функции?