C++Builder使用Lua的问题

来源:互联网 发布:有人自学java吗 编辑:程序博客网 时间:2024/05/16 17:06

C++Builder使用Lua的问题 by sdragon 15:58 2007-1-22

Lua解压后的目录结构:

../bin/  可执行文件目录,通常编译生成的Lua解释器和编译器将被放置到此目录下
../doc/  文档,包含参考手册
../etc/  其它一些Lua工具及其代码
../include/ 引用Lua需要包含的头文件
../lib/  编译生成的lib文件通常被放到此处
../src/  源代码,包含lib, 编译器,解释器
../test/ 测试脚本

编译库文件步骤:

一、lua.lib:

(1)新建一个"library"工程,取名"lua",去掉lua.bpf中的"#include <vcl.h>"。
(2)把"lua/src"目录下的所有c文件添加到工程:
 lapi.c
 lcode.c
 ldebug.c
 ldo.c
 ldump.c
 lfunc.c
 lgc.c
 llex.c
 lmem.c
 lobject.c
 lopcodes.c
 lparser.c
 lstate.c
 lstring.c
 ltable.c
 ltests.c
 ltm.c
 lundump.c
 lvm.c
 lzio.c

(3)设置工程属性:
 ProjectOption->"Directories/Conditional"
  添加"lua路径/include"、"lua路径/src"到Include Path。
  设置Intermediate output为"./intermeidate"。
  设置Final output为"lua路径/lib"。
(4)编译工程。

二、lualib.lib

(1)新建一个"library"工程,取名"lualib",去掉lua.bpf中的"#include <vcl.h>"。
(2)把"lua/src/lib"目录下的所有c文件添加到工程:
 lauxlib.c
 lbaselib.c
 ldblib.c
 liolib.c
 lmathlib.c
 ltablib.c
 lstrlib.c
 loadlib.c
(3)设置工程属性:
 ProjectOption->"Directories/Conditional"
  添加"lua路径/include"到Include Path。
  设置Intermediate output为"./intermeidate"。
  设置Final output为"lua路径/lib"。
(4)编译工程。

库使用问题:

库文件编译好后,新建一个普通工程,添加lua的头文件:

//因为lua的头文件都是C格式的,所以这里要加上extern "C",否则会出现编译错误。
extern "C"{
#include <lua/lua.h>
#include <lua/lauxlib.h>
#include <lua/lualib.h>
}//end extern "C"

#pragma link "lua.lib"
#pragma link "lualib.lib"

//在窗体上添加一个Memo,一个Button,试一下下面的代码,是否能够成功。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    const char *buf = "var = 1100/n";
    lua_State  *L   = lua_open();
    int         var = 0;
    luaopen_base(L);
    luaopen_io(L);
    lua_dostring(L, buf);
    lua_getglobal(L, "var");
    var = (int)lua_tonumber(L, -1);
    Memo1->Lines->Add(IntToStr(var));
    lua_close(L);
}
 

原创粉丝点击