Bonjour à tous.

En ce moment je m'essaye à Boost.Python, le code ci dessous compile sans problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
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.