您的位置:首页 > 科技 > 能源 > 电脑网站推荐_搜索引擎优化的五个方面_搜索关键词排名提升_媒体发稿公司

电脑网站推荐_搜索引擎优化的五个方面_搜索关键词排名提升_媒体发稿公司

2024/11/16 2:16:44 来源:https://blog.csdn.net/c1s2d3n4cs/article/details/143505542  浏览:    关键词:电脑网站推荐_搜索引擎优化的五个方面_搜索关键词排名提升_媒体发稿公司
电脑网站推荐_搜索引擎优化的五个方面_搜索关键词排名提升_媒体发稿公司

脚本的使用

local b,i,f,s = luascriptCallCpp(true,2,3.4,"hellocpp")
print("haha=",b,i,f,s)

脚本调用c/c++接口,脚本的第一个入参在栈底,最后一个入参在栈顶

c/c++接口的返回参数,第一个入栈的参数为脚本中的第一个返回值,依次类推。

c/c++接口函数的返回值int,表示lua脚本端的返回参数个数。

在c/c++端,获取脚本传入的参数方式1:依次从栈底开始取。

int exportLuascriptCallCpp1(lua_State* L)
{int iParams = lua_gettop(L); //获取参数个数if (lua_isboolean(L, 1)) {std::cout << 1 << "bool:" << std::boolalpha << lua_toboolean(L, 1) << '\n';}if (lua_type(L, 2) == LUA_TNUMBER && lua_isinteger(L, 2)) {std::cout << 2 << "int:" << lua_tointeger(L, 2) << '\n';}if (lua_type(L, 3) == LUA_TNUMBER && !lua_isinteger(L, 3)) {std::cout << 3 << "number:" << lua_tonumber(L, 3) << '\n';}if (lua_isstring(L, 4)) {std::cout << 4 << "string:" << lua_tostring(L, 4) << '\n';}lua_pushboolean(L, true);lua_pushinteger(L, 1);lua_pushnumber(L, 2.3);lua_pushstring(L, "returndata");return 4;
}

在c/c++端,获取脚本传入的参数方式1:依次从栈顶开始取,并且每次取出一个后lua_pop掉栈顶元素,所以获取下一个元素时依然是从栈顶开始。

int exportLuascriptCallCpp(lua_State* L)
{if (lua_isstring(L, -1)) {std::cout << 1 << "string:" << lua_tostring(L, -1) << '\n';}lua_pop(L, 1);if (lua_type(L, -1) == LUA_TNUMBER && !lua_isinteger(L, -1)) {std::cout << 1 << "number:" << lua_tonumber(L, -1) << '\n';}lua_pop(L, 1);if (lua_type(L, -1) == LUA_TNUMBER && lua_isinteger(L, -1)) {std::cout << 1 << "int:" << lua_tointeger(L, -1) << '\n';}lua_pop(L, 1);if (lua_isboolean(L, -1)) {std::cout << 1 << "bool:" << std::boolalpha << lua_toboolean(L, -1) << '\n';}lua_pushboolean(L, true);lua_pushinteger(L, 1);lua_pushnumber(L, 2.3);lua_pushstring(L, "returndata");return 4;
}

最后别忘记了要导出(注册)c/c++接口到lua的环境变量中。

static const luaL_Reg exportLib[] = {{"luascriptCallCpp",exportLuascriptCallCpp},{NULL, NULL}
};for (const luaL_Reg*lib = exportLib; lib->func; ++lib)
{lua_register(L, lib->name, lib->func);
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com