【原】Luabind 牛刀小试
http://x.jc.blog.163.com/blog/static/1678974200962852916402
这二天学习使用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
这二天学习使用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,然后键入以下代码:
#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; } |
main.lua脚本
require "hello_world" 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-11-11 10:32 Eric Xiang 阅读(4777) 评论(0) 编辑 收藏 举报