【原】Luabind 牛刀小试
这二天学习使用lua,在C++中使用lua不是很方便,需要找一个lua的包装库,看了网上的介绍,据说luabind比较好,比较强大,很多商业项目中都用它,当然,要用就用最好的。 运行环境如下:
1. VS2005 SP1
2. boost 1.38 ,(现在最新的是1.39)boost 安装很简单,先在boost目录下进入tools目录,编译bjam,然后再用bjam编译boost,bjam和ant的功能类似。 具体的参考boost的intall.txt.
3. 安装lua for windows 5.14,这个很简单滴。
4. 下载luabind 0.81再编译。
接下来就是真枪实战了,可以看luabind的文档写一个hello world. 文档上用的这种方式不太好。 导出多个函数都会出问题。 下面这个例子就可以倒出各种函数,很简单的。在VS中新建一个控制台项目,类型为DLL,命名项目为hello_world,然后键入以下代码:
main.lua脚本
然后把main.lua和hello_world.dll放在一起,并copy相关luabind.dll到该目录下,然后运行脚本即可。输出结果为:
haha 看来新上路,还比较顺利。。。
http://x.jc.blog.163.com/blog/static/1678974200962852916402
1. VS2005 SP1
2. boost 1.38 ,(现在最新的是1.39)boost 安装很简单,先在boost目录下进入tools目录,编译bjam,然后再用bjam编译boost,bjam和ant的功能类似。 具体的参考boost的intall.txt.
3. 安装lua for windows 5.14,这个很简单滴。
4. 下载luabind 0.81再编译。
接下来就是真枪实战了,可以看luabind的文档写一个hello world. 文档上用的这种方式不太好。 导出多个函数都会出问题。 下面这个例子就可以倒出各种函数,很简单的。在VS中新建一个控制台项目,类型为DLL,命名项目为hello_world,然后键入以下代码:
#include <iostream>
#include <luabind/luabind.hpp>
#include <luabind/lua_include.hpp>
#ifdef WIN32
#define LUA_EXPORT __declspec(dllexport)
#endif
extern "C"
{
#include "lua.h"
#include "lauxlib.h"
}
void greet()
{
std::cout << "hello world!\n";
std::cout << "hi, eric xiang!\n";
}
void welcome()
{
std::cout << "welcome to join us!\n";
}
void echo(const char * str)
{
std::cout << str << std::endl;
}
extern "C" int LUA_EXPORT luaopen_hello_world(lua_State* L)
{
using namespace luabind;
open(L);
module(L)
[
def("greet", &greet),
def("regard", &welcome),
def("echo", (void (*)(const char *))&echo)
];
return 0;
}
#include <luabind/luabind.hpp>
#include <luabind/lua_include.hpp>
#ifdef WIN32
#define LUA_EXPORT __declspec(dllexport)
#endif
extern "C"
{
#include "lua.h"
#include "lauxlib.h"
}
void greet()
{
std::cout << "hello world!\n";
std::cout << "hi, eric xiang!\n";
}
void welcome()
{
std::cout << "welcome to join us!\n";
}
void echo(const char * str)
{
std::cout << str << std::endl;
}
extern "C" int LUA_EXPORT luaopen_hello_world(lua_State* L)
{
using namespace luabind;
open(L);
module(L)
[
def("greet", &greet),
def("regard", &welcome),
def("echo", (void (*)(const char *))&echo)
];
return 0;
}
main.lua脚本
require "hello_world"
greet()
regard()
echo("this is a my first lua program")
greet()
regard()
echo("this is a my first lua program")
然后把main.lua和hello_world.dll放在一起,并copy相关luabind.dll到该目录下,然后运行脚本即可。输出结果为:
>lua -e "io.stdout:setvbuf 'no'" "main.lua" hello world! hi, eric xiang! welcome to join us! this is a my first lua program >Exit co |
haha 看来新上路,还比较顺利。。。
http://x.jc.blog.163.com/blog/static/1678974200962852916402
posted on 2009-07-28 17:31 Eric Xiang 阅读(1022) 评论(0) 编辑 收藏 举报