标签:data cout nts 文件 csdn 表示 south global lis
No code say a j8
C++ 调用 Lua
#include <iostream>
#include <string>
// 引入Lua必要的头文件,Version: Lua5.1.5
extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
};
using namespace std;
// C++ 调用 lua
int main()
{
//初始化全局L
lua_State *L = luaL_newstate();
//打开库
luaL_openlibs(L);
//载入lua脚本文件
if (luaL_loadfile(L,"LuaFile\\lua.lua")) // lua.lua 的路径,这里使用相对路径
{
printf("file load error\n");
}
lua_pcall(L,0,0,0); // 载入 Lua 文件
lua_getglobal(L, "l_str"); // get, 将L指向 lua文件里的函数 l_str
lua_pcall(L,0,1,0); // 运行指针L指向的函数,将结果返回到栈顶, (0,1,0) 表示 (输入个数,输出个数,其它处理)
string strVersion = luaL_checkstring(L,1); // 从栈顶获取元素
cout<<strVersion<<endl;
lua_close(L);
return 0;
}
/*************************************
Lua.lua
version = "Lua version: 5.1.5";
function l_str()
return version;
end;
print("Load LuaFile Accomplish");
*************************************/
Lua 调用 C++
#include <iostream>
#include <string>
// 引入Lua必要的头文件,Version: Lua5.1.5
extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
};
using namespace std;
// 将lua中的变量,通过这个函数打印出来
int c_Print(lua_State* L) // 返回值为压入栈中元素的个数
{
// 从參数列表中,获取元素
string strVersion = luaL_checkstring(L,1);
cout<<strVersion<<endl;
lua_pushstring(L, strVersion.c_str()); // 将 strVersion 压入栈。也能够不压
return 1; // 返回压入栈中元素的个数
}
// Lua 调用 C++ 的函数
int main()
{
//初始化全局L
lua_State *L = luaL_newstate();
//打开库
luaL_openlibs(L);
//载入lua脚本文件
if (luaL_loadfile(L,"LuaFile\\lua.lua")) // lua.lua 的路径,这里使用相对路径
{
printf("file load error\n");
}
lua_pcall(L,0,0,0); // 载入 Lua 文件
lua_pushcfunction(L, c_Print); // 将C++函数push进来
lua_setglobal(L, "c_Print"); // 将C++函数进行注冊。这样lua文件就能识别到了。
lua_getglobal(L, "l_Print");
lua_pcall(L,0,0,0); // 调用lua 中的 l_Print 函数
lua_close(L);
return 0;
}
/*************************************
Lua.lua
version = "Lua version: 5.1.5";
function l_Print()
c_Print(version);
end;
print("Load LuaFile Accomplish");
*************************************/
标签:data cout nts 文件 csdn 表示 south global lis
原文地址:http://www.cnblogs.com/jhcelue/p/7130318.html