LUA 5.1编译及实例操作是本文要介绍的内容,以前没接触过,并且能找的资料也少之又少, 花了两天的时间才搞定..一般的都是在vs2005中开发(我的就是),以下是关于vs2005中使用lua。
以下是我在vs2005中编译方法:
1、打开vs命令行工具、 工具->visual studio 2005 command prompt
2、到lua-5.1的目录也就是etc的上一级目录 :cd/d d:\lua-5.1
3、执行:etc\luavs.bat(注意:这里是\,不是/)
4、然后lua51.dll ,lua51.lib,lua.exe就生成在src路径下了~(注意因为是lua5.1的所以没有luac.exe,以前的版本有)
因为在vs2005中lua是外来的,所以要让vs2005能找到lua的头文件和库文件(lua5.1中只有一个lua51.lib),在vs中包含,于是:工具->选项->项目和解决方案->vc++ 目录 右边选择包含文件把src的路径包含进来(关于头文件的)。
还有库文件同意的操作,不过这里就是后来一直出错的点,这里这种方式包含的库文件是包含不进来的,后面讲到的一种方法可正确包含
头文件和库文件都包含进来后就可以在c++中使用lua了
看一个实例如下:
- #include <stdio.h>
- #include <iostream>
- extern "C"
- {
- #include "lua.h"
- #include "lualib.h"
- #include "lauxlib.h"
- }//在工具中包含文件的那个~~
- /* Lua解释器指针 */
- lua_State * L;
- #pragma comment(lib,"lua51.lib")//包含库文件~~在工具里包含不进来,上面的包含不进来的处理办法是:
- //把lua51.dll 拷到项目的dubug目录下,把lua51.lib拷到项目目录的项目名的文件夹下
- int main ()
- {
- /* 初始化Lua */
- L = lua_open();
- /* 载入Lua基本库 */
- luaL_openlibs(L);
- /* 运行脚本 ,注意路径*/
- luaL_dofile(L, "d:\\test.lua");
- /* 清除Lua */
- lua_close(L);
- //printf( "Press enter to exit…" );
- //getchar();
- return 0;
- }
上面是c++的一个空工程
下面是test.lua的代码:是一个石头剪子布的小的游戏实例
代码如下:
- ---[[
- math.randomseed(os.time()) --[[为随机数产生器生成一个种子--]]
- user_score = 0
- comp_score = 0 -- 全局变量存分数
- lookup = {}; --输赢对照表
- lookup["rock"]={rock = "draw",paper = "lose",scissors ="win"}
- lookup["paper"]={rock = "win",paper = "draw",scissors = "lose"}
- lookup["scissors"]={rock = "lose",paper = "win",scissors = "draw"}
- function GetAiMove() --Ai的函数
- local int_to_string = {"rock","paper","scissors"} --局部一个table,对照用
- return int_to_string[math.random(3)]
- end
- function EvaluateTheGuess(user_guess,comp_guess) -- 计算结果的函数
- if(lookup[user_guess][comp_guess]=="win") then
- print ("user win the game")
- --print()
- user_scoreuser_score=user_score+1 --小错误 ~已改
- elseif (lookup[user_guess][comp_guess]=="lose") then
- print ("user lose the game")
- --print()
- comp_scorecomp_score=comp_score+1
- else
- print ("draw!")
- --print()
- end
- end
下面开始
- print ("game begin:enter q to guit game")
- --print() --换行?
- loop = true
- while loop==true do
- --print()
- print("user: "..user_score.." comp: "..comp_score)
- print()
- print("p--布 r--拳头 s--减")
- print("请输入:")
- --io.open()
- user_guess =io.stdin:read '*l' --出错的地方,这里是l不是1
- --user_guess = "r"
- print()
- local letter_to_string = {r="rock",s="scissors",p="paper"} --亦是局部的一个table 对照用的
- if(user_guess == "q") then
- loop = false
- elseif(user_guess == "r") or (user_guess == "s") or(user_guess =="p") then
- comp_guess=GetAiMove()
- EvaluateTheGuess(letter_to_string[user_guess],comp_guess)
- else
- print ("invalid input,try again")
- end
- end
- --]]
小结:关于详解LUA 5.1编译及实例操作的内容介绍完了,希望通过本文的学习能对你有所帮助!