I want to export binary Chunk with lua_dump or luaU_dump ..
Error: only <-LuaR is returned
You have no compilation error or static code problems, only return <-LuaR
What can I do? to solve the problem?
private: const char* buildLua(QString luaScript) { const Proto* f; char *byteCode = 0L; size_t byteCodeLen = 0; wdata wd = { &byteCodeLen, &byteCode }; string ts = luaScript.toStdString(); const char* cs; lua_State *L = luaL_newstate(); f=combine(L,0); luaL_loadstring(L,ts.c_str()); luaL_openlibs(L); lua_lock(L); luaU_dump(L,f,kpt_lua_Writer,&wd,1); lua_unlock(L); lua_close(L); cs = byteCode; return cs; } static const char* kpt_lua_Reader(lua_State *L, void *ud, size_t *size) { UNUSED(L); if ((*(int*)ud)--) { *size=sizeof(FUNCTION)-1; return FUNCTION; } else { *size=0; return NULL; } } static int kpt_lua_Writer(lua_State * , const void *p, size_t sz, void *ud) { wdata *wd = (wdata *)ud; char *newData; if((newData = (char *)realloc(*(wd->data), (*(wd->len)) + sz))) { memcpy(newData + (*(wd->len)), p, sz); *(wd->data) = newData; *(wd->len) += sz; } else { free(newData); return 1; } return 0; } static const Proto* combine(lua_State* L, int n) { if (n==1) return toproto(L,-1); else { Proto* f; int i=n; if (lua_load(L,kpt_lua_Reader,&i,"=(keppedev)",NULL)!=LUA_OK) fatal(lua_tostring(L,-1)); f=toproto(L,-1); for (i=0; i<n; i++) { f->p[i]=toproto(L,in-1); if (f->p[i]->sizeupvalues>0) f->p[i]->upvalues[0].instack=0; } f->sizelineinfo=0; return f; } } static void fatal(const char* message) { QWidget *widget = new QWidget(); QMessageBox::warning(widget,"Keppe Develop",message); }
http://www.keppe.org/img/LuaR.png
source share