您的位置:首页 > 编程语言 > Lua

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

2013-05-16 13:07 323 查看
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


然后运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: