#include "stdafx.h"
#include <iostream>
#include <luabind/luabind.hpp>
using namespace std;
void print_hello(int number) {
std::cout << "hello world " << number << std::endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
lua_State *L = ::luaL_newstate(); /* opens Lua */
luabind::open(L);
luabind::module(L) [
luabind::def("print_hello", print_hello)
];
// 现在Lua中可以调用print_hello了
luaL_dostring(L, "print_hello(123)");
lua_close(L);
}
1.导出C++函数
先还要把C++函数添加到lua环境,然后在C++中调用lua函数,被调用的lua函数中再调用C++函数。这好像是一个循环,但其实在项目中可以使用lua来组织功能。
#include <iostream>
#include <luabind/luabind.hpp>
using namespace std;
class NumberPrinter {
public:
NumberPrinter(int number) : m_number(number) {}
void print() {
std::cout << m_number << std::endl;
}
private:
int m_number;
};
int _tmain(int argc, _TCHAR* argv[])
{
lua_State *L = ::luaL_newstate(); /* opens Lua */
luabind::open(L);
luabind::module(L)[
luabind::class_<NumberPrinter>("NumberPrinter")
.def(luabind::constructor<int>())
.def("print",&NumberPrinter::print)
];
// 现在Lua中可以使用NumberPinter类了
luaL_dostring(L,
"Print2000 = NumberPrinter(2000) "
"Print2000:print() "
);
lua_close(L);
}
2.导出C++类