当前位置: 首页 > news >正文

网站内如何做内部链接网站开发要什么专业

网站内如何做内部链接,网站开发要什么专业,免费网站怎么申请,厦门双模网站系列文章目录 lua调用C/C的函数,十分钟快速掌握 C调用lua脚本,包括全局函数绑定、类绑定,十分钟快速掌握 系列文章目录摘要环境使用步骤码代码自定义函数多返回值变长参数 自定义类test_sol2.lua内容 程序输出 摘要 在这个快节奏的技术博客…

系列文章目录

lua调用C/C++的函数,十分钟快速掌握


C++调用lua脚本,包括全局函数绑定、类绑定,十分钟快速掌握

  • 系列文章目录
  • 摘要
  • 环境
  • 使用步骤
  • 码代码
    • 自定义函数
      • 多返回值
      • 变长参数
    • 自定义类
    • test_sol2.lua内容
  • 程序输出


摘要

在这个快节奏的技术博客中,我们将借助sol2库,以十分钟的时间快速掌握如何在C++中调用Lua脚本。sol2是一个轻量级的Lua绑定库,它简化了C++与Lua之间的交互,使得全局函数和类的绑定变得异常简便。我们将创建几个”复杂的“函数,变长参数、多返回值,和一个具有几个成员函数的简单类,通过sol2的简洁语法,只需几行代码,我们就能将C++函数绑定到Lua环境中,实现跨语言调用。

为了快速输出我们要讲的内容,我不仅提供了实际的示例代码,还将解释每一步的操作,确保能够迅速理解并运用这一技术。通过这十分钟的快速掌握,希望将能够在项目中充分发挥C++与Lua的优势,实现更灵活、高效的代码编写。无论是全局函数的调用还是类的绑定,sol2为C++与Lua的融合提供了一种极具便利性和效率的解决方案。

环境

工具\组件版本说明
Windows10
visual studio2022
lua5.4
sol23.2.3
C++17sol2需要

使用步骤

lua头文件和静态链接库或者动态库,从官方网站下载预编译好的即可,当然如果你有自定义需求也可自行修改编译。

引入sol2头文件,从github上下载。

# 就是这三个文件,要按此层次结构放好。
│  sol.hpp
│
└─solconfig.hppforward.hpp

visual studio新建个项目,C++语言标准设置为C++17。

加入头文件和库文件到项目中。

接下来就是码代码了。


码代码

自定义函数

多返回值

通过使用sol2我们不需要自己再写包装方法,这一下就省了不少代码。

std::tuple<int,const char*, double> multipleResultFunc(int a, const char* b, double c)
{//return std::tuple<int, char*, double>(a, b, c);return std::make_tuple(a, b, c);
}

变长参数

int variaArgs(sol::variadic_args va)
{int r = 0;for (auto v : va){r += static_cast<int>( v);}return r;
}

自定义类

	class my_class{private:std::string m_str;public:int b = 24;int f() const{return 24;}void g(){++b;}void setTitle(const char* str){this->m_str = str;}void print(){std::cout << this->m_str << " , " << this->b << std::endl;std::wcout << this->rowname << L" , " << typeid( this->columns).name() << std::endl;}}
#define SOL_CHECK_ARGUMENTS 1
#include "sol.hpp"sol::state lua;lua.open_libraries(sol::lib::base);// "bark" namespacing in Lua// namespacing is just putting things in a tablesol::table bark = lua.create_named_table("bark");bark.new_usertype<my_class>("my_class","f", &my_class::f,"g", &my_class::g,"setTitle", &my_class::setTitle,"print", &my_class::print//,//"putUnsetValue", &my_class::putUnsetValue//,//"setSome", &my_class::setSome); // the usuallua.set_function("multipleResultFunc", multipleResultFunc);lua.set_function("variaArgs", variaArgs);// load and execute from filelua.script_file("test_sol2.lua");

test_sol2.lua内容

obj = bark.my_class.new()
obj:g()
local result =obj:f()
obj:setTitle("I am Tom , and you ?")
print(">>>>>>")
obj:print()bark.print_my_class(obj)
print(result)print(bark.add_two_number(1,2))mr, mr2, mr3 = multipleResultFunc(11, "Jerry", 123.45)
print(mr, mr2, mr3)
print(mr)print("call variable args function", 1, 2, 3, 4)
local r= variaArgs(1,2,3,4)
print(variaArgs, r)

程序输出

=== namespacing ===
I am Tom , and you ? , 25, class std::vector<unsigned long,class std::allocator<unsigned long> >
my_class { b: 25 }
24
3
11      Jerry   123.45
11
call variable args function     1       2       3       4
function: 0102B030      10
C source output Your name is Michael, and 2323 years old.
http://www.yayakq.cn/news/825673/

相关文章:

  • 昆明网站推广价格网站技能培训班有哪些
  • 网站建设的设计方案wordpress百度收录数
  • 邮箱免费申请注册账号seo优化培训
  • 衡水做淘宝网站企业网站建设的提案
  • 烟台网站主关键词优质网站策划
  • 巴中做网站公司做视频网站需要什么证件
  • 网站大量死链网上最好购物网站
  • 做网站怎么添加背景图片常见的网址有哪些
  • 怎么查看网站备案商属于网页制作平台有哪些
  • 帮您做网站做电影网站用什么虚拟主机
  • 做网站怎么把背景变成纯色欧洲服务器ip
  • 合肥网站建设佳蓝网络杭州网站开发制作公司
  • 行业门户网站 建站wordpress主题的作用
  • 比较好的网站空间前端项目
  • 北京网站快速排名优化上海seo排名
  • 网站建设微盘下载成都网站建设 好多科技
  • 网站开发框架有哪些老外做摄影网站花多少钱
  • 网站地图可以自己做么广告设计公司有什么岗位
  • 网站建设的业务范围免费商业源码论坛
  • 沧州海外网站建设wordpress 导出
  • 临沂专业网站制作公司网站建设的市场需求
  • 039 织梦云idc网站源码什么叫做网络营销
  • c站龙岩融胤网络科技有限公司
  • 徐州有哪些网站制作公司建筑设计网站网址
  • .top和网站计算机网站建设文献综述
  • 哪个网站有激光打标业务做ipad怎么制作网站
  • 怎样申请一个免费的网站空间WordPress透明二次元模板
  • 网站开发服务 税企业网络规划和设计方案
  • 可发外链的高权重网站网站空间和域名区别
  • 南昌中企动力做的网站怎么样仿网站百度会怎么做