免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2419 | 回复: 0
打印 上一主题 下一主题

如何通过Lua扩展你的应用--转自bbs.luachina.net [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-14 18:07 |只看该作者 |倒序浏览
Getting Started with Lua
Lua是轻量级的脚本语言,可以很方便用来扩展C/C++应用程序,下面我们通过几个简单的例子来学习Lua如何扩展C/C++的。
首先,你需要安装Lua,如果你使用windows操作系统你可以下载别人编译好了的二进制程序即可使用,当然你也可以下载Lua源代码(http://www.lua.org/download.html)使用你喜欢的编译器编译成二进制文件来使用.如果你使用Linux,你只需要下载源代码解压缩文件文件后执行make,然后作为root用户执行make install即可.Unix操作系统,你下载源代码,通过修改配置文件INSTALL中编译选项后执行和Linux下类似的操作即可.
当然如果你想在任意路径下都可以使用Lua,类Unix平台别忘了修改.profile文件加入你的环境变量;windows下则需要设置环境变量.
第一个程序:
这个程序很短小,但能说明问题,首先说明几点:
1.        调用lua_open()将创建一个指向Lua解释器的指针。
2.        lua_baselibopen()函数加载Lua库。
3.        使用lua_dofile()加载脚本并运行脚本。
4.        lua_close()来关闭Lua指向解释器的指针。
将下面的代码保存为luatest.cpp,如果你喜欢用C而不是C++,需要保存文件为luatest.c并且把extern去掉。

  1. #include <stdio.h>;

  2. extern "C" {
  3.         #include "lua.h"
  4.         #include "lualib.h"
  5.         #include "lauxlib.h"
  6. }

  7. /* the Lua interpreter */
  8. lua_State* L;

  9. int main ( int argc, char *argv[] )
  10. {
  11.         /* initialize Lua */
  12.         L = lua_open();

  13.         /* load Lua base libraries */
  14.         lua_baselibopen(L);

  15.         /* run the script */
  16.         lua_dofile(L, "test.lua");

  17.         /* cleanup Lua */
  18.         lua_close(L);

  19.         return 0;
  20. }
复制代码

下面是一个简单的Lua脚本:
  1. -- simple test

  2. print "Hello, World!"
复制代码

确认它能运行。
编译:
使用你喜欢的编译器编译上面保存的C/C++文件,下面以Linux为例:
命令行键入:
  1. g++ luatest.cpp -llua -llualib -o luatest
复制代码

如果没有错误的话,运行程序:
  1.         ./luatest
复制代码

程序应该打印出:Hello, World!
如果你不是Linux操作系统,使用的是Vc++编译器,你需要:
1.        创建一个新的win32控制台应用工程。
2.        将文件luatest.cpp添加到你的工程中。
3.        到Project, Settings点击Link页。
4.        添加lua+lib.lib到Object/library modules列表中。
5.        按F7编译程序。
运行程序以前,你需要确保lua+lib.dll文件放在windows可以找到的地方,将这个文件从C:\Program Files\Lua-5.0拷贝到Visual C++ project目录,如果编译没有错误的话,现在可以Ctrl+F5运行程序了。

通过这个例子我们已经踏上了在C/C++中嵌入Lua的第一步,下一篇我们介绍如何在C/C++中调用Lua函数并将函数的返回值传递给C/C++程序。
[/code]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP