VS下LUA编程环境搭建
VS下LUA编程环境搭建
以vs2003[en]为例
安装完LuaForWindows_v5.1.4
http://luaforge.net/frs/?group_id=377
打开vs
tools->options->projects->vc++ directories
executable files 选项添加lua安装以后的路径,我的是 E:\work\lua\Lua5.1
include files选项添加lua include路径,我的是 E:\work\lua\Lua5.1\include
library files 选项添加lua lib路径,我的是 E:\work\lua\Lua5.1\lib
[如果怕出问题,可以把这些新加的选项都提到最前面]
ok
其他一些问题及解决办法
1.编译报错一
oid __cdecl lua_close(struct lua_State *)" (?lua_close@@YAXPAUlua_State@@@Z) referenced in function _main
unresolved external symbol "void __cdecl lua_settop(struct lua_State *,int)" (?lua_settop@@YAXPAUlua_State@@H@Z) referenced in function _main
......
原因
代码中的包含头部分
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
用在了c++语法中
解决方法
添加扩展c调用申明
extern "C" {
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
}
2.编译报错二
unresolved external symbol _lua_close referenced in function _main
unresolved external symbol _lua_settop referenced in function _main
......
原因
lua静态库没有链接
解决方法
Project->Code text properties->configuration properties->linker->input
Additional Dependencies 选项加入 lua5.1.lib lua51.lib
3.编译成功后命令行提示unprotected error in call to lua api <no calling environment>
原因及解决方法
lua5.0以前初始化的都会用到如下函数
lua_State *L = lua_open();
luaopen_base(L);
luaopen_table(L);
luaopen_io(L);
luaopen_string(L);
luaopen_math(L);
5.1以后改为
lua_State *L = lua_open();
luaL_openlibs(L)
即可