您的位置:首页 > 编程语言 > Lua

lua环境的配置以及c++调用lua的简单例子

2015-04-15 00:12 477 查看
虽然上年暑假的时候,我看完了《lua程序设计》,那时候主要是把主要概念背熟,还有把几个面试要问的问题弄明白了,但实际上却很少写代码,写的lua代码可能都不超过1000行,哎,怪不得,才半年多,几乎所有东西都忘光了!

好吧,那现在就重新学一遍吧!这次就重在实践!而且那时候都是在VS2010上写代码的,由于趁着请假做毕业设计的时间,我学会了基本使用GCC和make,这次就可以脱离VS写代码了,直接用GCC编译链接程序,自己可以完全掌握代码编译链接的流程了。作为一个程序员,我还是觉得你还是有必要懂GCC、make的使用,以及对linux有了解。

我没有实习之前,以为一个程序能运行起来就可以啦,管它用VS还是GCC,但是工作后,发现周围使用的工具有XCODE、VS、还有GCC和make的使用,XCODE和VS是很好的IDE,但是当你在unix、linux类的环境下安装个工具,编译几行代码,那么问题就来了,如果你不会GCC、make,只是按照安装指导来执行gcc -Wall -O2 xxx.cpp -lxxx、make install等等,你就不会疑惑吗?更有的是出现一点点问题,你根本就不知道如何下手,只会搜谷歌、百度,寻求帮助。而且你一直使用IDE工具,没有写过makefile文件,那么你对代码是如何编译链接的,代码中的相互依赖关系,你可能也不会很清晰。最后,我还是觉得命令行和可视化工具的使用会影响你的思维方式。以前没有使用linux,我根本没觉得硬盘目录是什么,用户目录是什么?可能是我个人的问题!但是当我对linux有一点了解后,就会觉得用户就是在/home目录下的一个账号,在windows下就是c:\Users下的账号。硬盘其实是挂在/dev下面的一个链接。等等,当然这些都是我个人的看法,嘻嘻>..<。

如果在linux环境下,可以lua官网上下载最新的版本来进行编译链接,官网地址--http://www.lua.org/download.html。此时,就需要你熟悉make了,可以选择自己的平台make,平台如图1。你可以tar -zxfv xxx.tar.gz,cd到解压后的目录,然后直接执行make linux,直接make install,make linux是编译链接好库,make install 是把编好的库(liblua.a)复制到/usr/local/lib下面和把lua.h、lua.hpp、lualib.h、laulib.h、luaconf.h复制到/usr/local/include下面和把lua、luac复制到/usr/local/bin下面,这些都可以冲Makefile下面看到。
图1



在mac下面,编译lua方法也是如上。如果在想在XCODE中调用,引用了头文件和库就可以了,大概思想和下面的VS中的使用一样。

在windows下使用linux,可以使用mingw或者cygwin来模拟linux的环境,这里就使用cygwin,在安装cygwin是默认安装了lua的标准库和头文件,你可以在/usr/bin/下看到lua.exe,在/usr/lib/下看到liblua.dll.a、liblua5.1.dll.a,在/usr/include/下有lua.h、lua.hpp、luaconf.h、lauxlib.h、lualib.h、当然你可以在cygwin
setup中输入lua,选择lua其他的库。如图2。

图2



在windows环境下,在VS中,也可以直接引入上面说的头文件的路径和库的路径,那么就可以直接直接写了。你也可以直接安装一个luaforwindows,它的安装目录就有include和lib目录,你直接在VS中包含这两个路径也可以直接写了,它方便你不用自己编写库。luaforwindows自带SciTe编辑器,可以直接运行和调试lua。luaforwindows安装好的目录如图3。

图3



环境配置好了之后,就可以直接写代码了。

我这里是使用cygwin环境下,使用lua的。

先创建一个hellolua.lua的文件,如代码1:

代码1

function hellolua()

print("Hello Lua!")

end


然后创建main.cpp,在c++中调用lua代码,如代码2。当然lua中也可以调用c++代码。

#include<iostream>
#include<lua.hpp>
/*
*你也可以这样写
* extern "C" {
*  include "lua.h"
*  include "lualib.h"
*  include "lauxlib.h"
* }
* 这相当于把lua.hpp的内容写出来了
*/
int main(int argc,char* argv[])
{
lua_State *lua_state=lua_open();
luaL_openlibs(lua_state);//打开所有标准库

//加载脚本文件,需要在程序目录
luaL_loadfile(lua_state,"hellolua.lua");
lua_resume(lua_state,0);

//调用函数
lua_getglobal(lua_state,"hellolua");
if(lua_resume(lua_state,0))
{
std::cout<<lua_tostring(lua_state,1)<<std::endl;
}
//调用结束
lua_close(lua_state);
getchar();

return 0;
}
然后,在cygwin中利用g++来编译链接代码。如图4。

图4



图4的警告,是因为开了-W选项提示的。

你不要写成g++ -Wall -W -llua main.cpp -o hellolua,这可能会报错错误--undefined reference to错误,如图5,这是因为,一个调用了定义在另外一个库中的函数的库应当被放在包含该函数代码的库的前面,否则一些编译器会报错。

图5



最后执行hellolua.exe,结果如图6。
图6



上面就是环境的配置以及C++调用lua的例子。学会了环境的搭建和基本调用后,你就可以随意些代码了!
如需转载,请标明出处:/article/7828541.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: