Wrapping ich bin versucht Cython-wickelt eine DLL in C++ geschrieben mit der folgenden Header-Datei:ein C++ struct in Cython
#define EXTERN_DLL_EXPORT extern "C" __declspec(dllexport)
struct cmplx64
{
float re;
float im;
};
EXTERN_DLL_EXPORT int foo(cmplx64 *arr, int arr_sz);
Die PXD-Datei:
cdef extern from "mylib.h":
cdef struct cmplx64:
np.float64_t re
np.float64_t im
int foo(cmplx64 *arr, int arr_sz) except +
Die PYX Datei:
cimport cmylib
import numpy as np
cimport numpy as np
import cython
def foo(np.ndarray[np.complex64_t, ndim=1] arr, int arr_sz):
return cmylib.foo(&arr[0], arr_sz)
Das Problem wird nicht mit meiner Setup-Datei angezeigt.
Anstelle der struct
Definition habe ich versucht, eine cppclass
für einen Vorschlag, den ich gefunden habe, aber ich kam nicht so weit mit dieser aktuellen Methode.
Die Fehlermeldung erhalte ich ist:
Cannot assign type 'float complex *' to 'complexFloatStruct *'
Mein Problem wird durch die Tatsache, dass der Autor der Bibliothek ist ich eher einen komplexen Typ mit einer Struktur definiert wird, als einfach die eingebaute Verwendung in komplexer Typ in der C++ std
-Bibliothek. Wenn das der Fall wäre, hätte ich kein Problem.
Es scheint jedoch vollkommen vernünftig, dass ich in der Lage sein sollte, eine C++ - Klasse oder -Struktur mit Cython zu umhüllen. Ich habe die Dokumentation überstanden und bin ziemlich gescheitert. Danke für Ihre Hilfe!
Gute Idee, wird es morgen versuchen, und lassen Sie wissen. –
Das hat tatsächlich funktioniert. Vielen Dank! –