Plantage avec Boost.Python
Bonjour à tous.
En ce moment je m'essaye à Boost.Python, le code ci dessous compile sans problème :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| #include <boost/python.hpp>
#include <iostream>
using namespace boost::python;
void greet()
{
// Retrieve the main module.
object main = import("__main__");
// Retrieve the main module's namespace
object global(main.attr("__dict__"));
// Define greet function in Python.
object result = exec("def greet():\n" " return 'Hello from Python!' \n", global, global);
// Create a reference to it.
object greet = global["greet"];
// Call it.
std::string message = extract<std::string>(greet());
std::cout << message << std::endl;
}
void greet_file()
{
// Retrieve the main module.
object main = import("__main__");
// Retrieve the main module's namespace
object global(main.attr("__dict__"));
// Define greet function in Python.
object result = exec_file("hello.py", global, global);
// Create a reference to it.
object greet = global["greet"];
// Call it.
std::string message = extract<std::string>(greet());
std::cout << message << std::endl;
}
void main(int argc, char** argv)
{
Py_Initialize();
greet();
greet_file();
} |
et il s'execute sans problème lorsque je génère la librairie boost.python avec python 2.7. J'obtiens bien l'output suivant :
Code:
1 2
| Hello from Python!
Hello from Python! |
En revanche, si je génère la même librairie avec python 3.2.3, la première ligne s'affiche bien (donc "exec" marche) mais ensuite j'ai un message d'erreur de windows
Citation:
monprog.exe has stopped working...
Je suppose donc que c'est "exec_file" qui pose un problème.
Avez vous une idée ?
J'ai cherché sur la mailing list de boost, je n'ai rien trouvé de similaire, c'est peut-être ma config...
Merci pour votre aide.
ps. : j'ai essayé en "linkant" en static et en dynamic ; même résultat.