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
_imp__PyRun_SimpleStringFlags’ sin definir
C:\Users\...\AppData\Local\Temp\cceaTqLQ.o:run_py.cpp:(.text+0x25): referencia a
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>
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 directoriolibs
.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 bibliotecapython39
.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.