es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se pueden utilizar los encabezados de pybind11.

Solo quiero ser capaz de compilar un programa de C++ con la siguiente línea

#include <pybind11 pybind11.h=""> 

He intentado establecer la ruta con cmake:

set(CMAKE_CXX_FLAGS "-march=native -O3 -I /usr/include/python3.9/ -I /home/.local/lib/python3.9/site-packages/pybind11/include/")

No funcionó. La ruta directa al archivo en CMAKE CXXFLAGS lleva a “archivo no encontrado”.

Intenté agregar la ruta de encabezado en bashrc:

$HOME/.local/lib/python3.9/site-packages/pybind11/include
$ pybind11/pybind11.h 
bash: pybind11/pybind11.h: no se encontró el archivo o el directorio

Si pongo la ruta a:

$HOME/.local/lib/python3.9/site-packages/pybind11/include/pybind11 
$ pybind11.h 
bash: pybind11.h: comando no encontrado ...

¡Nada hace que el encabezado sea visible!

Este siempre funciona cuando trato de importar encabezados en C ++.

El archivo

$HOME/.local/lib/python3.9/site-packages/pybind11/include/pybind11/pybind11.h 

definitivamente está en el sistema.
Puedo hacer esto sin problemas:

#include  

¿Qué está sucediendo?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que puede haber un problema con la ruta que se establece correctamente en el archivo CMakeLists.txt o con las variables de entorno.

    Una solución posible podría ser intentar establecer la ruta en el archivo CMakeLists.txt de una manera diferente. En lugar de usar set(CMAKE_CXX_FLAGS...), intenta usar include_directories(). Por ejemplo:

    include_directories($ENV{HOME}/.local/lib/python3.9/site-packages/pybind11/include) 
    

    Esto debería agregar el directorio a la ruta de inclusión durante la compilación.

    Si eso no funciona, intenta verificar si el archivo de encabezado está en el directorio correcto. Puedes verificarlo con el comando:

    ls $HOME/.local/lib/python3.9/site-packages/pybind11/include/pybind11/
    

    Si no está allí, intenta reinstalar pybind11. Si está allí, asegúrate de que no haya problemas de permisos que impidan que el compilador acceda al archivo.

    Por último, verifica que se esté utilizando la versión correcta de Python agregando la ruta correcta a la biblioteca de Python durante el enlace. Esto se puede hacer agregando la línea link_libraries(/path/to/python3.9/lib) en el archivo CMakeLists.txt.

Comments are closed.