C++Builder使用Lua的问题
2007-01-23 17:55
274 查看
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);
}
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);
}
相关文章推荐
- C++Builder使用Lua的问题
- Lua math.fmod使用时的小数问题
- lua math.fmod使用注意小数问题
- Cocos2d-x 3.2 Lua项目通过LuaSQLite3使用Sqlite3问题总结
- lua中使用packagepath解决多个项目的路径冲突问题
- Lua脚本接入Android使用JNI调用本地接口,需要注意的问题
- 使用protoc-gen-lua-master需要注意的问题
- 使用C++Builder创建自定义VCL组件时的一些问题
- 使用c++builder中stringgird控件和设定行名称和列名称的问题
- C++Builder中使用iwnativxml中的TNativeXML注意的问题
- 使用lua更新脚本后,xcode下游戏资源没有更新的问题[quick-cocos2d-x]
- cocos2d-x Lua使用pluginx中得IOSIAP遇到的问题
- Lua的迭代器使用中应该避免的问题和技巧
- quick3.3使用tolua工具导出C++到lua所遇问题记录
- 最近在编写一些bat工具时,发现自己对lua的io和正则表达式使用没什么了解,网络上转载解决问题后的文章。
- lua使用table问题
- C++Builder中关于INDY库的使用 以及一些问题的解决(E2238 Multiple declaration for 'fd_set')
- 使用C++BuilderX开发环境的小问题
- 使用lua和tolua++遇到的一个古怪问题
- lua 使用 spine 的一些问题