[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Bin2c does nothing in my app?
- From: Robert Raschke <rrlua@...>
- Date: Thu, 29 Mar 2007 09:46:34 +0100
L-28C writes:
> Okay. I bin2c'd a luac'd file. I included the bin2c output in my C++
> program, it gave syntax errors, an opening brace at the top and a
> function call at the bottom. I removed the brace and cut/pasted the func
> call to my C++ program. Here:
>
> -- CODE/ --
> #include <stdio.h>
> #include <lua.h>
> #include <lauxlib.h>
> #include <lualib.h>
> #include "mtx.luc.h" // bin2c file
>
> int main()
> {
> lua_State *L = lua_open();
> if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"mtx.luc")==0)
> lua_pcall(L, 0, 0, 0);
> lua_close(L);
> return 0;
> }
> -- /CODE --
>
> I run the program but it gives no output. I'm on VC++ 2005 and it
> compiles just fine.
Hmm, I use bin2c under Lua 5.0.3 and my C code looks roughly like this:
static int
open_mtx(lua_State *L)
{
#include "mtx.luc.h"
return 0;
}
int
main()
{
lua_State *L = lua_open();
open_mtx(L);
// ...
}
As far as I understand, bin2c creates a bit of code that can be
executed. So, it needs to be included somewhere in your C++ code
where you can then call it. That's why the #include is inside the
function. When you execute the code, then the compiled lua is run. I
guess you could simplify this even further (I don't because of lots of
other stuff in my code):
int main()
main()
{
lua_State *L = lua_open();
# include "mtx.luc.h"
// ...
}
The bin2c code references L, so you'll always have to make the
provision for L to be an available lua_State in the scope where you
include the bin2c code.
Robby
--
r dot raschke at tombob dot com