el bandito
Posts: 6
Joined: Mon Apr 16, 2018 7:40 pm

Librairie <python.h> erreur compilation

Wed Apr 18, 2018 5:43 pm

Bonjour,

Je souhaite exécuter un script python à partir d'un code en C, mais j'ai un problème lors de la compilation, en effet il ne reconnait pas `Py_Initialize', PyRun_AnyFileExFlags' et `Py_Finalize'.

g++ -Wall -o "main" "main.cpp" (in directory: /home/pi/Documents)
/tmp/cceUQB2A.o: In function `main':
main.cpp:(.text+0xb0): undefined reference to `Py_Initialize'
main.cpp:(.text+0xc4): undefined reference to `PyRun_AnyFileExFlags'
main.cpp:(.text+0xc8): undefined reference to `Py_Finalize'
collect2: error: ld returned 1 exit status
Compilation failed.


Du coup, j'ai cherché sur Internet et apparement cela provient de ma librairie python, pourtant je lui indique correctement le chemin jusqu'à la librairie <Python.h>. De plus, le compilateur ne m'indique pas d'erreur sur cette ligne (#include "/usr/include/python2.7/Python.h"), donc je lui ai bien spécifié le chemin d'accès.

Avez vous des idées svp, je bloque complètement ?

Voici mon code que je compile sous Geany :

#include <stdio.h>
#include "/usr/include/python2.7/Python.h"
#include <fstream>
#include <iostream>

using namespace std;

int main()
{
//Test d'existance du fichier
ifstream fichier("test.py");

if (fichier.fail()) {
cout << "Fichier de script introuvable : " << "test.py" <<"\n";
return 0;
}

//Lance le script
cout << "\n--- Execution du script : " << "test.py" <<" ---\n";

// Ouvre le script python a executer
FILE* pyFile = fopen("test.py", "r");

Py_Initialize();

// Execute le script
//string exec ( "execfile(r\"" ); // note r for raw Python string.
// exec += "test.py" ; exec += "\")" ;
// PyRun_SimpleString( (char*) exec.c_str() );

// Execute le script
PyRun_AnyFile(pyFile, "test.py");

Py_Finalize();

return 1;
}

totoharibo
Posts: 3852
Joined: Thu Jan 24, 2013 8:43 am

Re: Librairie <python.h> erreur compilation

Wed Apr 18, 2018 6:58 pm

un petit -l <ta librairie python sans lib> à al fin de la ligne de commande de gcc comme ça il pourra la lier avec ton programme

el bandito
Posts: 6
Joined: Mon Apr 16, 2018 7:40 pm

Re: Librairie <python.h> erreur compilation

Thu Apr 19, 2018 5:01 pm

Salut,

J''ai pas compris, je dois lancer cette commande sur la console pour lier avec mon programme ?

gcc -I/usr/include/python2.7 p.c -lpython2.7

totoharibo
Posts: 3852
Joined: Thu Jan 24, 2013 8:43 am

Re: Librairie <python.h> erreur compilation

Thu Apr 19, 2018 7:44 pm

#include <stdio.h>
veut dire que tu inclus une librairie

certaine sont liées d'office, d'autres pas, c'est le cas de python.

c'est pas si semple entre les librairies dynamiques et statiques.
La réponse est trop longue
un peu de lecture te l'expliquera mieux que moi :
http://perso.univ-lyon1.fr/jean-claude. ... c/gcc.html
(les liens ne manquent pas)

Return to “Français”

Who is online

Users browsing this forum: No registered users and 3 guests