Я пытаюсь запустить свой код C ++ из python, так как я хочу связать его с программным обеспечением с открытым исходным кодом, имеющим интерфейс python, поэтому я использовал cython для обертывания. Мой код C ++ может быть скомпилирован из Python, но у меня есть некоторые проблемы с возвратом результатов, которые являются векторами с плавающей точкой. Я могу вернуть одно число с плавающей точкой или целое число в Python, но не вектор. Я попытался вернуть указатель, как это обычно делается для функций C ++, но python не распознает форму указателя C ++.
Вот упрощенный код, чтобы показать, что я имею в виду.
Мой файл .hpp:
#include "mpi.h"
float my_cppfun(int D);
мой .cpp файл:
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include "my_cpp.hpp"
float my_cppfun(int D)
{
float DD[D];
int i;
for (i=0;i<D;i++){
DD[i]=i;
}
return DD[i-1];
//return DD instead of DD[i-1]
}
мой файл .pyx:
cdef extern from "my_cpp.hpp":
float my_cppfun(int)
def my_cpp(int D):
return my_cppfun(D)
мой .py файл:
from mpi4py import MPI
from pympi import my_cpp
y=my_cpp(3)
print y
Существует также файл setup.py, и он работает в данный момент. Мне интересно, как я могу вернуть массив DD вместо одного значения с плавающей запятой (DD [i-1]).
Заранее спасибо за помощь.