Как я могу реализовать функции, написанные на C++, в Python?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как я могу реализовать функции, написанные на C++, в Python?

Сообщение Anonymous »

Моя идея состоит в том, чтобы иметь возможность реализовать определенные части моего кода Python на C++ для его оптимизации.
Поэтому я запрограммировал на C++ код, который вычисляет производную трех переменных моя функция написана на Python.
Я использую CFFI, однако когда я пытаюсь вставить функцию Python в свой код C++, я получаю сообщение об ошибке:

Код: Выделить всё

    from cffi import FFI
import energia as en

# Crear un objeto FFI
ffi = FFI()

# Define la función C++ que deseas usar
ffi.cdef("""
struct DoubleVector {
double *data;
int size;
};

struct TripleDoubleVector {
struct DoubleVector at;
struct DoubleVector av;
struct DoubleVector an;
};
struct TripleDoubleVector primera_deri_py(double (*f)(double, double, double, double), double x1,     double x2, double x3, double x4, double h, int n);
long long int factorial(int n);
""")

C_LIBRARY_PATH = "my_library.dll"

C_LIB = ffi.dlopen(C_LIBRARY_PATH)

ms_ff=1
sigma_ff=2.2925620261592128*10**(-10)
ekb_ff=23.34412307095915
lamda_ff=2.0968946920619693
MM=2*1.00784
comp=1
paramsff=[ms_ff,sigma_ff,ekb_ff,lamda_ff,MM]

n=10
h=10**(-7.5)
result2 = C_LIB.primera_deri_py(en.atotswpi, 70, 1, comp, paramsff, h, n)
result2 должен быть вектором, который возвращает 3 значения, соответствующие производной по температуре, объему и составу.
Я получаю сообщение об ошибке: следующим образом:

Код: Выделить всё

TypeError                                     Traceback (most recent call last)
Cell In\[8\], line 38
36 n=10
37 h=10\*\*(-7.5)
\---\> 38 result2 = C_LIB.primera_deri_py(en.atotswpi(70,1,comp,paramsff), 70, 1, comp, paramsff, h, n)

TypeError: initializer for ctype 'double(\*)(double, double, double, double)' must be a cdata pointer, not numpy.float64
Я хотел бы иметь возможность программировать свои функции на Python, создавать части своего кода на C++ и вызывать их в Python, а затем вводить эти функции, и чтобы части кода оптимизировались с помощью c++.
Я пробовал искать учебные пособия в Интернете, но не нашел ничего, что могло бы мне помочь.

Подробнее здесь: https://stackoverflow.com/questions/783 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»