- Código: Seleccionar todo
- #include <luabind/luabind.hpp>
 #include <luabind/adopt_policy.hpp>
 #include<iostream>
 using namespace std;
 extern "C" {
 #include "lua.h"
 #include "lualib.h"
 #include "lauxlib.h"
 }
 void pt(int *p)
 {
 cout<<*p<<endl;
 }
 class nume
 {
 
 public:
 int *n;
 nume(){};
 void set(int i){n=new int; *n=i;}
 int *get(){return n;}
 
 };
 int main(int argc,char* argv[]) {
 
 
 
 // Create a new lua state
 lua_State *L = lua_open();
 
 // Connect LuaBind to this lua state
 luabind::open(L);
 luaL_openlibs(L);//load basic libs
 
 using namespace luabind;
 
 module(L)
 [
 def("pt", &pt)
 ];
 
 module(L)
 [
 class_<nume>("nume")
 .def(constructor<>())
 .property("n",&nume::set, &nume::get,luabind::detail::null_type(), adopt(result))
 ];
 
 
 luaL_dostring(
 L,
 "a=nume()\n"
 "a:set(2)\n"
 "print(2)\n"
 );
 
 lua_close(L);
 }
Comando para compilar: g++ -I ./ -I/usr/local/include -I/usr/include/lua5.1 -lluabind -llua5.1 -ldl -o test test.cpp
OK, bueno pues se supone que lo que debe hacer es devolverme un apuntador a un entero de c++, y que dentro le lua lo pueda volver a enviar a una funcion de c++, pero no funciona, Cuando llamo a a:set(2) no se ejecuta el script por que tiene un error, Si lo quito ya se ejecuta.
Hay poca documentacion de esto en la web y por eso me ha costado trabajo, ya logre exportar funciones y clases, y lo pude ejecutar bien, pero nececito los apuntadores, espero que alguien sepa del tema.



