Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

188
Vistas
Error al compilar Cython con archivos de encabezado C

Así que estoy tratando de envolver un código C con Cython. Leí los tutoriales de Cython aplicados sobre cómo hacer esto ( 1 , 2 ), pero estos tutoriales no dicen mucho sobre cómo compilar el código una vez que lo haya envuelto con Cython, por lo que tengo un error que dice que no puede encontrar mi C código.

Primero, mi secuencia de comandos cython ("calcRMSD.pyx"):

 import numpy as np cimport numpy as np cdef extern from "rsmd.h": double rmsd(int n, double* x, double* y) #rest of the code ommited

El código C que estoy tratando de envolver ("rmsd.h"):

 #include <string.h> #include <stdio.h> #include <stdlib.h> #include <math.h> extern "C" { // svd from lapack void dgesvd_(char*,char*,int*,int*,double*,int*,double*,double*,int*,double*, int*,double*,int*,int*); } double rmsd(int n, double* x, double* y) { //code omitted }

Configuración.py

 from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext from Cython.Build import cythonize import numpy as np setup( ext_modules = cythonize([Extension("calcRMSD", sources = ["calcRMSD.pyx"], include_dirs = [np.get_include()], libraries = ["dgesvd"] #extra_compile_args = ["-I."], #extra_link_args = ["-L./usr/lib/liblapack.dylib"] )]) )

Mi error:

 calcRMSD.c:269:10: fatal error: 'rsmd.h' file not found #include "rsmd.h"

Leí este hilo de desbordamiento de pila Usando Cython para vincular Python a una biblioteca compartida

pero seguirlo me da diferentes errores. Si trato de poner rmsd.h en las fuentes, dice que no reconoce el tipo de archivo.

¿Cómo vincular C personalizado (que a su vez necesita opciones de vinculación especiales para compilar) con Cython?

Esto parece algo prometedor, pero no estoy seguro de cómo usarlo.

¡Por favor ayuda!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En primer lugar, debe encontrar el archivo de inclusión, rsmd.h Debe agregar la ruta donde se puede encontrar este encabezado al parámetro include_dirs . El error sobre el archivo que falta debería desaparecer.

Luego, además, deberá incluir la biblioteca que obtiene al compilar ese código C. Si eso es librsmd.a , agregaría 'rsmd' al parámetro de libraries . Además, es posible que necesite un parámetro library_dirs que contenga la ruta donde se puede encontrar esa biblioteca.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda