luabind : retour d'une fonction C++
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:
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 :(