Hey, I was trying to use bit32, but I'm getting attempt to index global 'bit32' (a nil value). I ran 'lua -v', and it returns 'Lua 5.2.3', so I'm guessing that's not the lua version that Love is using. How to find out the actual lua version? Does it mean I'll have to use third party libs for bitwise operations?
Mercurial
Lua version
Forum rules
Before you make a thread asking for help, read this.
Before you make a thread asking for help, read this.
Re: Lua version
At the moment LOVE is using LuaJIT 2.0.3 which corresponds to Lua 5.1. 'bit32' is Lua 5.2 specific I guess. You can use 'bit' instead, which is LuaJIT specific.
How to check Lua version example:
How to check Lua version example:
Code: Select all
function luaInfo()
local info = "Lua version: " .. _VERSION .. "\n"
info = info .. "LuaJIT version: "
if (jit) then
info = info .. jit.version
else
info = info .. "this is not LuaJIT"
end
return info
end
print(luaInfo())
-
- Prole
- Posts: 13
- Joined: Fri Apr 18, 2014 3:14 pm
Re: Lua version
Thanks. Setting up 'bit' doesn't look like that simple.
Edit: I've been trying to follow install instructions on the official website. A little bit of help would be appreciated. I downloaded the lua 5.1.5. source and LuaBitOp-1.0.2
cd LuaBitOp-1.0.2
make macosx
sudo make install
1. Copy the file bit.c from the Lua BitOp distribution to your Lua source code directory. - Check
2. Add this file to your build script (e.g. modify the Makefile) or import it as a build dependency in your IDE. - I'm not sure on where exactly should I add this in the Makefile
3. Edit lualib.h and add the following two lines: '#define LUA_BITLIBNAME "bit" LUALIB_API int luaopen_bit(lua_State *L);' - Check
4. Edit linit.c and add this immediately before the line with {NULL, NULL}: {LUA_BITLIBNAME, luaopen_bit}, - Check
5. Now recompile and you're done!
Recompiling lua gives:
which looks to me that the makefile doesn't know about the bit.c file(obviously, it hasn't been added to Makefile).
Mercurial
Edit: I've been trying to follow install instructions on the official website. A little bit of help would be appreciated. I downloaded the lua 5.1.5. source and LuaBitOp-1.0.2
cd LuaBitOp-1.0.2
make macosx
Code: Select all
/Applications/Xcode.app/Contents/Developer/usr/bin/make all "SOCC=MACOSX_DEPLOYMENT_TARGET=10.4 gcc -dynamiclib -single_module -undefined dynamic_lookup"
MACOSX_DEPLOYMENT_TARGET=10.4 gcc -dynamiclib -single_module -undefined dynamic_lookup -fPIC -o bit.so bit.o
Code: Select all
install -p bit.so `lua installpath.lua bit`
2. Add this file to your build script (e.g. modify the Makefile) or import it as a build dependency in your IDE. - I'm not sure on where exactly should I add this in the Makefile
3. Edit lualib.h and add the following two lines: '#define LUA_BITLIBNAME "bit" LUALIB_API int luaopen_bit(lua_State *L);' - Check
4. Edit linit.c and add this immediately before the line with {NULL, NULL}: {LUA_BITLIBNAME, luaopen_bit}, - Check
5. Now recompile and you're done!
Recompiling lua gives:
Code: Select all
gcc -o lua lua.o liblua.a -lm -lreadline
Undefined symbols for architecture x86_64:
"_luaopen_bit", referenced from:
_luaL_openlibs in liblua.a(linit.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [lua] Error 1
make[1]: *** [macosx] Error 2
make: *** [macosx] Error 2
Mercurial
- slime
- Solid Snayke
- Posts: 3166
- Joined: Mon Aug 23, 2010 6:45 am
- Location: Nova Scotia, Canada
- Contact:
Re: Lua version
You don't need to download or compile anything. LuaJIT (and thus the BitOp library) is included with LÖVE. When you run a love game through your copy of LÖVE, it uses the LuaJIT library distributed with LÖVE (in the case of Mac OS X, all of the libraries LÖVE uses are in love.app/Contents/Frameworks).
Just run this code with your copy of LÖVE, rather than through a Lua version you downloaded:
Just run this code with your copy of LÖVE, rather than through a Lua version you downloaded:
Code: Select all
assert(jit and jit.version)
local bit = require("bit")
assert(bit.lshift(1, 4) == 0x10)
-
- Prole
- Posts: 13
- Joined: Fri Apr 18, 2014 3:14 pm
Re: Lua version
Slime: Wow, you're right! I didn't see any mention of this on wiki, though.
Thanks
Thanks
Who is online
Users browsing this forum: Ahrefs [Bot] and 4 guests