在VS中测试Lua项目

来源:互联网 发布:单片机无线抢答器 编辑:程序博客网 时间:2024/06/11 19:06

(1)下载,安装LuaForWindows_v5.1.4-40.exe


(2)安装完成后:开始-运行-cmd回车,输入lua,成功安装时会显示Lua的版本等信息。本人的是:
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio


(3)VS2005下新建一个win32控制台应用程序的空项目。
新建一个main.cpp文件输入

extern "C"{#include <lua.h>#include <lauxlib.h>#include <lualib.h>}#include <stdio.h>#include <string>int main (void){ char buff[256]; int error; lua_State *L = lua_open(); /* opens Lua */ luaopen_base(L); /* opens the basic library */ luaopen_table(L); /* opens the table library */ luaopen_io(L); /* opens the I/O library */ luaopen_string(L); /* opens the string lib. */ luaopen_math(L); /* opens the math lib. */ while (fgets(buff, sizeof(buff), stdin) != NULL) {  error = luaL_loadbuffer(L, buff, strlen(buff),   "line") || lua_pcall(L, 0, 0, 0);  if (error) {   fprintf(stderr, "%s", lua_tostring(L, -1));   lua_pop(L, 1);/* pop error message from the stack */  } } lua_close(L); return 0;}


(4)将C:\Program Files\Lua\5.1下的include和lib两个文件夹拷到工程所在目录下

将工程属性C/C++附加包含目录和链接器的附加库目录。


注意:lua相关的头文件要以extern "C"的方式,否则将报如下错
1>main.obj : error LNK2019: 无法解析的外部符号 "void __cdecl lua_close(struct lua_State *)" (?lua_close@@YAXPAUlua_State@@@Z),该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "void __cdecl lua_settop(struct lua_State *,int)" (
?lua_settop@@YAXPAUlua_State@@H@Z),该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "char const * __cdecl lua_tolstring(struct lua_State *,int,unsigned int *)" (
?lua_tolstring@@YAPBDPAUlua_State@@HPAI@Z),该符号在

函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "int __cdecl lua_pcall(struct lua_State *,int,int,int)" (
?lua_pcall@@YAHPAUlua_State@@HHH@Z),该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "int __cdecl luaL_loadbuffer(struct lua_State *,char const *,unsigned int,char const *)" (?

luaL_loadbuffer@@YAHPAUlua_State@@PBDI1@Z),该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "int __cdecl luaopen_math(struct lua_State *)" (
?luaopen_math@@YAHPAUlua_State@@@Z),该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "int __cdecl luaopen_string(struct lua_State *)" (
?luaopen_string@@YAHPAUlua_State@@@Z),该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "int __cdecl luaopen_io(struct lua_State *)" (
?luaopen_io@@YAHPAUlua_State@@@Z),该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "int __cdecl luaopen_table(struct lua_State *)" (
?luaopen_table@@YAHPAUlua_State@@@Z),该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "int __cdecl luaopen_base(struct lua_State *)" (
?luaopen_base@@YAHPAUlua_State@@@Z),该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "struct lua_State * __cdecl luaL_newstate(void)" (
?luaL_newstate@@YAPAUlua_State@@XZ),该符号在函数 _main 中被引用

链接器的输入下的附加依赖性设置为 lua5.1.lib lua51.lib,否则将报错。
1>main.obj : error LNK2019: 无法解析的外部符号 _lua_close,该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 _lua_settop,该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 _lua_tolstring,该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 _lua_pcall,该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 _luaL_loadbuffer,该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 _luaopen_math,该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 _luaopen_string,该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 _luaopen_io,该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 _luaopen_table,该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 _luaopen_base,该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 _luaL_newstate,该符号在函数 _main 中被引用

再次编译OK。

注意:运行程序时,luaopen_io(L); /* opens the I/O library */语句之后不能单步调试运行

版权声明:本文为博主原创文章,未经博主允许不得转载。

0 0
原创粉丝点击