LuaIntf-第一步「建议收藏」

LuaIntf-第一步

大家好,又见面了,我是全栈君。

LuaInft   https://github.com/SteveKChiu/lua-intf

ReadME .MD https://github.com/SteveKChiu/lua-intf/blob/master/README.md

一些基础信息,作者在github上面描述很清楚

这个lib 提供了cpp和lua交互 解决方案

1.运行执行lua文件 函数

	lua_State *l = luaL_newstate();
	luaL_openlibs(l);

	LuaIntf:: LuaContext ctx(l);
	ctx.doFile("1.lua");

	LuaIntf::LuaRef func(l, "func");
	func(1000);

2.导出class 


#include "LuaIntf/LuaIntf.h"

using namespace LuaIntf;

class Test
{
public:
	void Print()
	{
		cout << __FUNCTION__ << this->GetValue() << endl;
	}

	void SetValue(int v) { this->_value = v; }//setter

	int GetValue() { return this->_value; };//getter

	Test(string s) {}
	Test(void) {}
private:
	int _value = 0; // inner value
};

int main(int argc, char *argv[])
{
	lua_State *l = luaL_newstate();
	luaL_openlibs(l);

	LuaIntf::LuaBinding(l).beginClass<Test>("Test")
		.addConstructor(LUA_ARGS(_opt<std::string>))
		.addConstructor(LUA_ARGS())
		.addFunction("Print", &Test::Print)
		.addProperty("v", &Test::GetValue, &Test::SetValue) // 绑定getter 和setter,lua变量名为v
		.endClass();

	try
	{
		LuaIntf::LuaContext ctx(l);
		ctx.doFile("1.lua");

		LuaIntf::LuaRef func(l, "func");
		func(1000);
	}

	catch (LuaException  e)
	{
		cout << e.what();
	}
	_CrtDumpMemoryLeaks();
	system("pause");
	return 0;
}


lua代码

print("567856");


  function func(x)
    print(x);
end




local xxx= Test();
 xxx:Print();
 xxx.v=3;
 xxx:Print();



 

3.注册模块

比上面的代码多了:


	LuaIntf::LuaBinding(l).beginModule("cpp") /// cpp 模块名字
		.addFunction("log", &log1)
		.addFunction("FUNCNAME", [=] 
	{
		log1(__FUNCTION__);
	})
		.endModule();


lua代码


cpp.log("haha");
cpp.FUNCNAME();

 

 

 

 

 

 

转载于:https://my.oschina.net/kkkkkkkkkkkkk/blog/825686

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108693.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 解决win10下VM12虚拟机桥接模式不能上网的方法(亲测可行)[通俗易懂]

    解决win10下VM12虚拟机桥接模式不能上网的方法(亲测可行)[通俗易懂]解决win10下VM12虚拟机桥接模式不能上网的方法(亲测可行)本文的方法可解决如下两个问题:局域网中其他机器ping不通本机中的虚拟机本机中的虚拟机采用桥接模式不能上网,甚至主机也不能上网。注意:自己局域网的IP起始地址及路由器地址,可以通过登陆路由器查看,也可以在所有操作之前在CMD中通过命令ipconfig(windows)或ifconfig(linux)查看。一般路由器的地…

    2022年6月10日
    39
  • angularjs清除浏览器缓存

    angularjs清除浏览器缓存if(!$httpProvider.defaults.headers.get){  $httpProvider.defaults.headers.get={};}$httpProvider.defaults.headers.common["X-Requested-With"]=’XMLHttpRequest’;$httpProvider.defaults.h…

    2022年7月18日
    15
  • Windows系统日志分析工具– Log Parser「建议收藏」

    Windows系统日志分析工具– Log Parser「建议收藏」可参考文章:日志分析工具LogParser学习笔记_Memetali_ss的博客-CSDN博客写完才看见。吐了0x01基本设置事件ID及常见场景对于Windows事件日志分析,不同的EVENTID代表了不同的意义,摘录一些常见的安全事件的说明。4624–登录成功4625–登录失败4634–注销成功4647–用户启动的注销4672–使用超级用户(如管理员)进行登录系统:1074,通过这个事件ID查看计算机的开机、关…

    2022年9月8日
    0
  • 使用Windows PE的U盘安装win7

    前年刚去公司的时候用PE装过好多系统,最近又装一台华硕的,碰到了一个问题,一起记录了下。华硕X45,Bios已经改为U盘启动了,但就是进不去,因为知道可能还有个选磁盘启动项的键,找了半天原来按Esc就

    2021年12月21日
    47
  • 创建servlet的4个步骤_映射不能一对多还是多对一

    创建servlet的4个步骤_映射不能一对多还是多对一Servlet接口的实现类,路径配置映射,ServletConfig对象,ServletContext对象及web工程中文件的读取…

    2022年4月20日
    52
  • 设置eclipse代码自动补全功能

    设置eclipse代码自动补全功能1.选择Eclipse菜单条中的Windows菜单下的Preferences项2.在左侧找到“Java”->“Editor”->“ContentAssist”3.在右侧“AutoActivation”项目下找到“AutoactivationtriggersforJava:”(可以看到设置框中默认的只有“.”,这就是为什么默认只有点“.”可以触发自动补全…

    2022年5月31日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号