saiksy

记录生活中的点点滴滴

C++博客 首页 新随笔 联系 聚合 管理
  13 Posts :: 0 Stories :: 1 Comments :: 0 Trackbacks

既然是从零开始,那么就搞的傻瓜一点,就算是手把手教了. 哈哈.

一下内容在vs2005实现

新建一个空的win32控制台项目.

1.首先我们来配置头文件和库文件:

头文件:

D:\Lua\lua-5.1.4\src

D:\Lua\luabind
-0.8.1

D:\Lua\boost_1_41_0

库文件:无.见代码.

 

下面就是cpp内容了:注释都是个人理解,如果您觉得不对

#include <luabind/luabind.hpp>
#pragma comment(lib,
"lualib.lib"//可能你会问,lualib.lib是哪里来的? 这是我自己编译luabind得到

//的,  如果你不知道怎么编译,参考下我的另一篇文章<从零开始使用luabind>
#include <iostream>
using namespace std;
using namespace luabind;


class testlua//写一个测试类,包括一些简单的方法.
{
public:
 testlua(std::
string s):m_str(s){};
 
void myprint()
 
{
  cout 
<< m_str << endl;
 }

 
void setstr(std::string s){ m_str = s;};
private:
 std::
string m_str;
}
;


int main()
{
 lua_State 
*= luaL_newstate();//新建一个lua_State,或者叫做创建lua状态
 luabind::open(L);//为改lua状态打开所有lua库

//把写好的类绑定到lua,以下内容为读书所得,我看的是missdeer同学翻译的luabindmanual一书.
//相信好学的你,如果不明白这是怎么用的,一定会找来这书读一读的,当然我也很乐意和您分享(Q:625425901)

 module(L)

[  
   class_
<testlua>("testlua")
   .def(constructor
<const std::string>())
   .def(
"myprint",&testlua::myprint)//开放这两个函数给lua使用
   .def("setstr"&testlua::setstr)
  ];

 
 luaL_dofile(L,
"test.lua");//执行lua文件,稍后你会看到test.lua文件的内容
 lua_close(L);//关闭lua状态
 return 0;
}


 

以下是test.lua内容:


local a 
= testlua("hello lua!");--看不懂?如果我说它在c里是这样的: testlua obj = testlua("hello lua!"),看懂了么?恩,构建testlua类的对象.

a:myprint();
//调用方法

a:setstr(
"yes lua!");

a:myprint();

 

--接下来我们在lua里尝试如下代码:

a:hisprint();

--你也许会问,这个函数不存在啊.确实不存在,但是程序并没有报错,所以或许我们需要其他的代码来处理这种错误的调用,后话了,慢慢来.

 

好了,执行一下C代码,你应该会看到想要的结果了.相信不少同学看到这里已经开始计划写一个类,用来随心所欲的开放你的C方法给lua使用了.先到这里.

欢迎批评指正.

 

posted on 2011-05-19 01:08 saiksy 阅读(467) 评论(1)  编辑 收藏 引用

Feedback

# re: 使用luabind的第一段代码 2011-05-19 10:27 K.V
我觉得脚本最大的问题就是不好调试。  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理