Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

189
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!