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.

Cómo incrustar Python en C++

Me gustaría poder ejecutar código Python desde una aplicación en C++.

No tengo ningún conocimiento de C++, solo sé Python.
Estoy tratando de seguir el tutorial Incrustar un programa Python en un código C/C++, pero como no sé C++, me resulta difícil seguirlo.

Estoy utilizando Windows 10. Logré instalar MinGW como mi compilador.

Este es el código en C++ llamado run_py.cpp:

“`c++
#include <stdio.h>
#include <conio.h>
#include <python.h>

int main()
{
PyObject* pInt;

Py_Initialize();

PyRun_SimpleString("print('¡Hola, Mundo desde Python integrado en C++!')");

Py_Finalize();

printf("\nPresione cualquier tecla para salir...\n");
if(!_getch())
    _getch();
return 0;

}


Ya he instalado las herramientas de desarrollo de Python, así que ya tengo <em>Python.h</em>. Estoy tratando de compilar mi archivo .cpp usando este comando desde la terminal de Windows:

g++ -I C:\Users...\Python39\include run_py.cpp -L C:\Users...\Python39\libs -o run_py.exe


Pero me da este error:

C:\Users...\AppData\Local\Temp\cceaTqLQ.o:run_py.cpp:(.text+0xf): referencia a _imp__Py_Initialize' sin definir
C:\Users\...\AppData\Local\Temp\cceaTqLQ.o:run_py.cpp:(.text+0x25): referencia a
_imp__PyRun_SimpleStringFlags’ sin definir
C:\Users...\AppData\Local\Temp\cceaTqLQ.o:run_py.cpp:(.text+0x2c): referencia a `_imp__Py_Finalize’ sin definir
collect2.exe: error: ld devolvió el estado de salida 1
“`

¿Cómo puedo solucionar esto?</python.h></conio.h></stdio.h>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Ejecutando Código Python desde una Aplicación C++

    Si solo conoces Python y deseas ejecutar código Python desde una aplicación C++, puedes seguir el tutorial sobre cómo incrustar un programa de Python en código C/C++. Sin embargo, si encuentras errores durante el proceso de compilación, aquí tienes algunos consejos para solucionarlos:

    Error: referencia no definida a _imp__Py_Initialize

    Este error ocurre porque el enlazador no puede encontrar la referencia a la función Py_Initialize. Para solucionarlo, debes agregar el directorio de la biblioteca de Python en la ruta de búsqueda del enlazador. En Windows, los archivos de la biblioteca de Python se encuentran en el directorio libs de la instalación de Python. Puedes agregar este directorio a la ruta de búsqueda del enlazador utilizando la opción -L seguida de la ruta al directorio libs.

    Ejemplo de comando:

    g++ -I C:\Users\...\Python39\include -L C:\Users\...\Python39\libs run_py.cpp -lpython39 -o run_py.exe

    Observa la adición de -lpython39, que indica al enlazador que enlace con la biblioteca python39.

    Error: referencia no definida a _imp__PyRun_SimpleStringFlags

    Este error ocurre porque el enlazador no puede encontrar la referencia a la función PyRun_SimpleStringFlags. Esta función está definida en la biblioteca python39.dll, por lo que necesitas enlazarla utilizando la opción -lpython39.

    Error: referencia no definida a _imp__Py_Finalize

    Este error ocurre porque el enlazador no puede encontrar la referencia a la función Py_Finalize. Para solucionarlo, debes enlazar con la biblioteca python39 utilizando la opción -lpython39.

    Ejemplo de comando:

    g++ -I C:\Users\...\Python39\include -L C:\Users\...\Python39\libs run_py.cpp -lpython39 -o run_py.exe

    Con estos cambios, deberías poder compilar y ejecutar tu aplicación C++ que ejecuta código Python exitosamente.

Comments are closed.