• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

用VC加载Lua.lib,C++调用lua脚本函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1、先去lua.org官方网站上去下载一个win32的vc10库(vs2010),如果你是其他版本请按照实际需求下载。

2、创建一个新的 空控制台应用程序

3、复制lualib下的include所有.h文件到项目中,并且全部加入到header files和source files中。

4、新建一个main.cpp文件到source files中:加入C++代码:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#pragma comment (lib,"lua52.lib")

void MaxMin(lua_State* L, int x, int y)
{
    lua_getglobal(L, "MaxMin");
    //参数1
    lua_pushnumber(L, x);
    //参数2
    lua_pushnumber(L, y);

    //2个参数,3个返回值
    lua_pcall(L, 2, 3, 0);
    const char* c = lua_tostring(L, -3);
    lua_Number n1 = lua_tonumber(L, -2);
    lua_Number n2 = lua_tonumber(L, -1);

    //cout<<c<<"  "<<"Max = "<<n1<<", Min = "<<n2<<endl;
    printf("%s Max = %f Min = %f\n", c, n1, n2);  
    //元素出栈
    lua_pop(L, 3);
}

void printHello(lua_State* L)
{
    lua_getglobal(L, "printHello");

    lua_pcall(L, 0, 1, 0);
    const char* c = lua_tostring(L, -1);

    printf("%s",c);  
    //元素出栈
    lua_pop(L, 1);
}

int main()
{
    lua_State* L = luaL_newstate();
    if(!luaL_loadfile(L, "C:\\vsproject\\lua\\test\\testlua.lua"))
    {
        if(!lua_pcall(L, 0, 0, 0))
        {
            MaxMin(L, 1, 2);
            MaxMin(L, 3, 3);
            MaxMin(L, 9, 8);
            printHello(L);
        }
    }
    lua_close(L);
    system("pause");
    return 0;
}

5、然后再C:\\vsproject\\lua\\test\\ 目录下新建一个文件testlua.lua(也可以放在你想要放的地方),加入lua代码:

function MaxMin(x, y)
    if x > y then
        return "x > y", x, y
    elseif x == y then
        return "x = y", x, y
    else
        return "y > x", y, x
    end
end
function printHello()
    return "Hello, world!"
end

然后运行结果:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
lua脚本教程 - 胡椒籽籽发布时间:2022-07-22
下一篇:
[Unity插件]Lua行为树(七):行为树嵌套发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap