既然是从零开始,那么就搞的傻瓜一点,就算是手把手教了. 哈哈.
一下内容在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 *L = 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使用了.先到这里.

欢迎批评指正.