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

做PPT的网站canva织梦商城模板

做PPT的网站canva,织梦商城模板,上传网站空间,wordpress竖排一、Lua简介 Lua 是一种强大的、高效的、轻量级的、可嵌入的脚本语言。它支持过程#xff08;procedural#xff09;编程、面向对象编程、函数式编程以及数据描述。Lua 是动态类型的#xff0c;运行速度快#xff0c;支持自动内存管理#xff0c;因此被广泛用于配置、脚本…一、Lua简介 Lua 是一种强大的、高效的、轻量级的、可嵌入的脚本语言。它支持过程procedural编程、面向对象编程、函数式编程以及数据描述。Lua 是动态类型的运行速度快支持自动内存管理因此被广泛用于配置、脚本编写等场景。 二、Lua的优势 Lua脚本可以很容易的被C/C 代码调用也可以反过来调用C/C的函数这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本也可以作为普通的配置文件代替XML、ini等文件格式并且更容易理解和维护。 Lua由标准C编写而成代码简洁优美几乎在所有操作系统和平台上都可以编译、运行。 一个完整的Lua解释器不过200k在所有脚本引擎中Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。 三、Qt Lua 环境搭建 Lua是用标准C编写的所以几乎常见的编程环境它都能编译Lua。下载源码包后直接编译即可。 1、 下载Lua 下载地址https://www.lua.org/ftp 2、 使用QtCreator编译lua.a库 打开QtCreator新建项目 Library C库在后续弹出的窗口中选择 Statically Linked Library根据向导完成项目的创建然后删掉由向导添加的头文件和源文件。将除了lua.c和luac.c以外的文件加入到你的开发环境中进行编译即可。文末有对应的pro文件可以参考一下。 pslua.c 和 luac.c 中都有main函数需要分别编译这两个文件。其中lua.c编译出来是解析器luac.c编译出来是编译器。 四、在Qt中调用Lua 1、 新建一个math.lua文件内容如下 function fn_add(x,y)return x y endfunction fn_subtract(x,y)return x - y endfunction fn_multiply(x,y)return x * y endfunction fn_divide(x,y)return x*1.0 / y end2、Qt调用Lua的测试代码 新建Qt控制台程序在该控制台程序的pro文件配置一下lua库的头文件以及库文件路径 CONFIG(debug, debug|release){DESTDIR $$PWD/../bin/debugOBJECTS_DIR $$PWD/../obj/debugDIR_NAME debug } CONFIG(release, debug|release){DESTDIR $$PWD/../bin/releaseOBJECTS_DIR $$PWD/../obj/releaseDIR_NAME release } INCLUDEPATH $$PWD/./3rdparty/libLua/include LIBS -L$$PWD/./3rdparty/libLua/lib/$${DIR_NAME}/ -lliblua控制台main.cpp的代码如下 #include QCoreApplication #include stdio.h extern C{ #include lua.h #include lauxlib.h #include lualib.h }lua_State *L; double luaMath(std::string fname, int x, int y) {/* 要调用一个函数请遵循以下协议* 首先要调用的函数应该被压入栈接着把需要传递给这个函数的参数按正序压栈* 这是指第一个参数首先压栈。最后调用一下 lua_call当函数调用完毕后* 所有的参数以及函数本身都会出栈而函数的返回值这时则被压栈。*/double result;/*获取函数名*/lua_getglobal(L, fname.c_str());/*压入第一个参数*/lua_pushnumber(L, x);/*压入第二个参数*/lua_pushnumber(L, y);/*使用2个参数调用函数返回1个结果。*/lua_call(L, 2, 1);/*获取结果*/result (double)lua_tonumber(L,-1);/*清理返回结果*/lua_pop(L, 1);return result; }int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);L luaL_newstate();//新建lua解释器luaL_openlibs(L);//载入lua基础库#if 1//执行lua脚本:luaL_dofile(L, lua/math.lua);//填写实际的math.lua文件的相对路径/*call the add function*/int sum luaMath(fn_add, 10, 15);printf(sum %d\r\n, sum);int subtract luaMath(fn_subtract, 10, 15);printf(subtract %d\r\n, subtract);int multiply luaMath(fn_multiply, 10, 15);printf(multiply %d\r\n, multiply);auto divide luaMath(fn_divide, 10, 15);printf(divide %.3f\r\n, divide); #endif/*cleanup Lua*/lua_close(L);system(pause);return a.exec(); }3、输出结果 sum 25 subtract -5 multiply 150 divide 0.667五、附上lua库的pro文件内容 QT - guiTEMPLATE lib CONFIG staticlibCONFIG c11#去掉生成空的debug和release目录 CONFIG - debug_and_release# 编译时临时文件路径 RCC_DIR $$PWD/../temp/rcc_tmp MOC_DIR $$PWD/../temp/moc_tmp UI_DIR $$PWD/../temp/ui_tmpCONFIG(debug, debug|release){DESTDIR $$PWD/../lib/debugOBJECTS_DIR $$PWD/../obj/debugDIR_NAME debug } CONFIG(release, debug|release){DESTDIR $$PWD/../lib/releaseOBJECTS_DIR $$PWD/../obj/releaseDIR_NAME release }# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES QT_DISABLE_DEPRECATED_BEFORE0x060000 # disables all the APIs deprecated before Qt 6.0.0SOURCES \lapi.c \lauxlib.c \lbaselib.c \lcode.c \lcorolib.c \lctype.c \ldblib.c \ldebug.c \ldo.c \ldump.c \lfunc.c \lgc.c \linit.c \liolib.c \llex.c \lmathlib.c \lmem.c \loadlib.c \lobject.c \lopcodes.c \loslib.c \lparser.c \lstate.c \lstring.c \lstrlib.c \ltable.c \ltablib.c \ltm.c \lundump.c \lutf8lib.c \lvm.c \lzio.cHEADERS \lapi.h \lauxlib.h \lcode.h \lctype.h \ldebug.h \ldo.h \lfunc.h \lgc.h \ljumptab.h \llex.h \llimits.h \lmem.h \lobject.h \lopcodes.h \lopnames.h \lparser.h \lprefix.h \lstate.h \lstring.h \ltable.h \ltm.h \lua.h \lua.hpp \luaconf.h \lualib.h \lundump.h \lvm.h \lzio.h# Default rules for deployment. unix {target.path $$[QT_INSTALL_PLUGINS]/generic } !isEmpty(target.path): INSTALLS target#拷贝头文件到include目录下 win32 {SrcIncludeDir $${PWD} #定义的宏变量,在非首位置使用时需要带{}SrcIncludeDir $$replace(SrcIncludeDir, /, \\)DstIncludeDir $$PWD/../include/DstIncludeDir $$replace(DstIncludeDir, /, \\)#多条命令语句之间可以用隔开,自动连续执行QMAKE_POST_LINK echo ---------prepare to copy *.h--------- echo.QMAKE_POST_LINK cd $$SrcIncludeDir xcopy /s/y/i $$SrcIncludeDir\lauxlib.h $$DstIncludeDirQMAKE_POST_LINK xcopy /s/y/i $$SrcIncludeDir\lua.h $$DstIncludeDirQMAKE_POST_LINK xcopy /s/y/i $$SrcIncludeDir\luaconf.h $$DstIncludeDirQMAKE_POST_LINK xcopy /s/y/i $$SrcIncludeDir\lualib.h $$DstIncludeDir#打印测试#message(--SrcIncludeDir $$SrcIncludeDir)#message(--DstIncludeDir $$DstIncludeDir) }
http://www.w-s-a.com/news/172814/

相关文章:

  • 洛阳工程建设信息网站山西响应式网页建设哪里好
  • 企业网站建设市场的另一面wordpress分类插件
  • 网站建设名头公司展厅装修
  • 小型购物网站开发费用郑州企业网站模板建站
  • 个体商户建自己的网站做销售建设积分兑换官方网站
  • 网站建设与维护培训网页制作专业用语
  • 建站特别慢wordpress网页制作与设计项目策划书
  • 视频制作素材免费网站头像制作在线生成器
  • 网站建设是不是可以免费建站广州做网站 信科网络
  • 闸北区网站设计叫别人做网站后怎么更改密码
  • 为什么想做网站运营建设工程教育网站
  • 站长基地百度推广整体优化网站
  • 门窗 东莞网站建设wordpress外链论坛
  • 安徽省建设部网站官网还能用的wap网站
  • 企业网站设计开发网站关键词优化seo
  • 郑州高档网站建设台州网站建设推广
  • 广东省建设信息港网站WordPress手机缩略图设置
  • 优秀网站主题平顶山专业做网站公司
  • wordpress返回顶部插件wordpress站群seo
  • 企业网站建设报价表百度竞价托管哪家好
  • 织梦网站首页打开慢淄博网站推广那家好
  • 苏州高端网站建设kgwl互动网站建设的主页
  • 宿州网站建设哪家公司好个人网站制作方法
  • 网站正能量晚上在线观看视频站长之家关键词挖掘工具
  • 建设网站怎么判断是电脑还是手机仿租号网站源码网站开发
  • seo百度网站排名软件重庆巫山网站设计公司
  • 搭建视频播放网站网站排名诊断
  • 网站域名注册网站centos做网站服务器
  • 网站服务器共享的 vpsh5页面制作软件电脑版
  • 免费手机网站申请上海网站建设设计公司哪家好