在lua中调用C++

来源:互联网 发布:网络剧有毒 原著 编辑:程序博客网 时间:2024/06/05 20:03

#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++类


参考网站:点击打开链接,点击打开链接

0 0
原创粉丝点击