¿Cómo importar un módulo generado por Cython desde Python al archivo principal de C / C ++? (progtwigción en C / C ++)

Así que tengo una función escrita en python y seguí los pasos en la Documentación de Cython ‘Construyendo un módulo de Cython usando distutils’. Sin embargo, ¿no me queda claro cómo usar ese módulo que está funcionando en Python (importándolo) para incrustarlo en C / C ++? Solo quiero comstackr un código C / C ++ que importe un módulo generado por python utilizando Cython (supongo que es un proceso de 2 pasos)

* Para aclarar, ya he realizado todos los pasos y he creado un módulo python a partir de un archivo fuente .pyx. Pero mi pregunta es cómo integrar ese módulo en un archivo C / C ++ existente.

Simplemente declare las cosas que desea llamar en c / c ++ como cdef public

por ejemplo:

 # cymod.pyx from datetime import datetime cdef public void print_time(): print(datetime.now().ctime()) 

Cuando se citonee cymod.pyx a cymod.c , cymod.h se cymod.h un cymod.h .

Luego haga una biblioteca, por ejemplo: cymod.lib (en windows).

En los códigos c (main.c):

 #include "Python.h" #include "cymod.h" int main(int argc, char **argv) { Py_Initialize(); PyInit_cymod(); // in cymod.h print_time(); // call the function from cython Py_Finalize(); return 0; } 

Comstackr y ejecutar (main.exe)

Nota: main.exe está altamente vinculado a los entornos de Python, se pueden encontrar errores, como cannot find pythonxx.dll , Fatal Python error: Py_Initialize: unable to load the file system codec . Hay muchas soluciones en este sitio.

Mirando el tutorial de Cython, así es como Cython se usa para extender Python con módulos C comstackdos.

  1. El módulo separado de Cython está escrito en Python. Cython lo convertirá en un módulo comstackdo estático como si estuviera escrito en C.
  2. Use un archivo setup.py para comstackr el módulo Cython como una biblioteca compartida *.so . Esta biblioteca compartida es en realidad un módulo de Python.

    python setup.py build_ext --inplace

  3. Desde el script regular de Python import el módulo Cython

    import helloworld

Cython se usa normalmente para extender Python con C. Si, por otro lado, desea incrustar el código Python en su progtwig C, esto también es posible. Echar un vistazo a los documentos oficiales sobre cómo incrustar Python en C es un buen lugar para leer primero.

Aquí hay un proyecto de github que explica cómo hacerlo y un blog sobre cómo hacerlo.