VS2005+Lua

来源:互联网 发布:淘宝街拍风怎么拍 编辑:程序博客网 时间:2024/06/05 15:39

更多精彩内容,请见:http://www.16boke.com


by zxy,Java/C++编程交流群QQ:168424095

由于原来安装的Lua,SciTe等都不能正常打开运行,决定重新下载安装。
(2)下载,安装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"的方式,否则将报如下错,具体原因见上篇《Lua中文教程》读书笔记
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 */语句之后不能单步调试运行


更多精彩内容,请见:http://www.16boke.com

原创粉丝点击