Bonjour

m'étant mis aux langage de script lua récemment, j'essaye de mettre en place un binding lua/C++ avec luabind

j'ai un souci sur le façon de récupérer la valeur de retour d'une fonction C++ appelée depuis lua

par exemple si je veux entrer le carré d'un nombre et récupérer le résultat dans une string:

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
 
#include "lua.hpp"
#include "luabind.hpp"
 
#include <string>
#include <cstring>
#include <iostream>
#include <sstream>
 
using namespace std;
 
string intToString(int n)
{
     ostringstream out;
     out<<n;
     string s = out.str();
 
     return s;
}
 
char* stringToChar(string str)
{
    size_t size  = str.size()+1;
    char* ch = new char[size];
    strncpy( ch, str.c_str(), size );
 
    return ch;
}
 
const char* square(int number) {
 
	int res = number * number;
 
        string sres = "résultat : " + intToString(number)
 
	return sres.c_str();
}
 
int main(){
 
	  lua_State *myLuaState = lua_open();
 
	  luabind::open(myLuaState);
 
	  luabind::module(myLuaState) [
	    luabind::def("square", square)
	  ];
 
 
          int number  = 5;
 
	  string str = "square(" + intToString(number) + ")";
	  char* param = stringToChar(str);
 
	  luaL_dostring(
	    myLuaState,
	    param
	  );
 
          //retour de la fonction C++ "square" en string
          string stres("");
 
	  const char * res = lua_tostring(myLuaState, -1);
	  stres.assign( res );
 
	  delete [] param;
          delete res;
 
	  lua_close(myLuaState);
 
	 cout<<"resultat final : " << stres << endl;
}
le problème c'est que dans la chaine "resultat final", je n'obtiens rien