windows下Qt与lua结合简单介绍

来源:互联网 发布:wumpus java 游戏编码 编辑:程序博客网 时间:2024/06/15 11:59

一、下载lua编译好的windows下二进制库

http://joedf.users.sourceforge.net/luabuilds/

下面就是载下来的最新lua编译好的文件

二。简单测试:

1.打开windows的cmd终端,并进入到该目录,进入后可运行lua指令,进入lua命令终端,输入一个打印语句 print("hello"),可以看到输出hello

2.按ctrl+c退出lua的命令终端,在同级目录下建立一个print的打印脚本,就可以直接用lua+脚本名直接运行,简单测试如下

可以用luac.exe来编译hello.lua的脚本,来保护我们的程序,编译完会生成一个 luac.out的文件,同样也可以用lua直接运行,不过已经是编译过的,别人已经无法随便修改、复制了

三、在Qt中用lua

1.配置

简单的新建一个Qt控制台程序--- luaTest,并配置连接lua载下来的lua53库,luaTest.pro文件配置如下

<span style="color: rgb(128, 0, 128);">DESTDIR</span><span style="color: rgb(192, 192, 192);"> </span>=<span style="color: rgb(192, 192, 192);"> </span>../luaTest/binary<pre style="margin: 0px; text-indent: 0px; -qt-block-indent: 0; -qt-paragraph-type: empty;">
QT       += core
QT       -= gui
TARGET = luaTest
CONFIG   += console
CONFIG   -= app_bundle
TEMPLATE = app
LIBS += -L$$DESTDIR \
   -llua53
SOURCES += main.cpp
HEADERS += \
    lualib.h \
    lua.h \
    lauxlib.h

运行过程,会提示找不到lua的库

拷贝库到binary目录下,就可以运行了,binary文件夹已配置在工程的同级目录生成下,也可以自己指定路径:

DESTDIR= ../luaTest/binary

2.下载源码点击打开链接,并从下载的源码中提取头文件:

http://www.lua.org/download.html

在工程目录,即和main.cpp的同级目录下中加入如下几个头文件:

在我们的项目中包含以上几个文件

HEADERS += \    lualib.h \    lua.h \    lauxlib.h

在binary目录下新建一个add.lua脚本文件,用来测试,脚本内容如下:

function add(x,y)       return x + y end 

在main.cpp中加载该脚本,完整代码如下:


#include <QCoreApplication>#include <QDebug>extern "C"{#include "lua.h"#include "lauxlib.h"#include "lualib.h"}lua_State *L;int luaadd(int x,int y){    int sum;/*the function name*/    lua_getglobal(L,"add");/*the first argument*/    lua_pushnumber(L,x);/*the second argument*/    lua_pushnumber(L,y);/*call the function with 2 arguments, return 1 result.*/    lua_call(L,2,1);/*get the result.*/    sum = (int)lua_tonumber(L,-1);/*cleanup the return*/    lua_pop(L,1);    return sum;}int main(int argc, char *argv[]){    QCoreApplication a(argc, argv);    /* create state */    L =  luaL_newstate();    /*load Lua base libraries*/    luaL_openlibs(L);    /*load the script*/    luaL_dofile(L,"add.lua");    /*call the add function*/    int sum = luaadd(10,15);    /*print the result*/    qDebug()<<"sum:"<<sum;    /*cleanup Lua*/    lua_close(L);    return a.exec();}

运行结果如下:


自此,已经成功的在Qt中加载lua脚本





0 0
原创粉丝点击