Lua和C++交互 学习记录之一:C++嵌入脚本
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍)
部分内容查阅自:《Lua 5.3 参考手册》中文版 译者 云风 制作 Kavcc
vs2013+lua-5.3.3
1.首先需要编译出lua库
①创建一个静态库工程,将lua-5.3.3里的所有文件包含到工程里面去
②进行编译就可以得到一个lua的静态库,提供给后面的测试项目使用
2.创建学习测试console项目
①引入上面步骤生成的lua静态库
②包含lua的所有头文件
③创建一个hello.lua,里面的内容只有一句
print("Hello world !")
3.测试项目里的C++代码
#include <iostream> //这个头文件包含了所需的其它头文件
#include "lua.hpp" static const luaL_Reg lua_reg_libs[] = {
{ "base", luaopen_base},
{ NULL, NULL },
}; int main(int argc, char* argv[])
{
if (lua_State* L = luaL_newstate()){ //注册让lua使用的库
const luaL_Reg* lua_reg = lua_reg_libs;
for (; lua_reg->func; ++lua_reg){
luaL_requiref(L, lua_reg->name, lua_reg->func, );
lua_pop(L, );
} //加载脚本,如果出错,则打印错误
if (luaL_dofile(L, "hello.lua")){
std::cout << lua_tostring(L, -) << std::endl;
} lua_close(L);
}
else{
std::cout << "luaL_newstate error !" << std::endl;
} system("pause"); return ;
}
4.部分函数解析
(1)void luaL_requiref (lua_State *L, const char *modname,lua_CFunction openf, int glb);
①如果 modname 不在 package.loaded 中, 则调用函数 openf ,并传入字符串 modname。 将其返回值置入 package.loaded[modname]。
这个行为好似该函数通过 require 调用过一样。
如果 glb 为真, 同时也将模块设到全局变量 modname 里。
在栈上留下该模块的副本。
②查看lualib.h文件,里面可引入的库如下:
 static const luaL_Reg lua_reg_libs[] = {
     { "base", luaopen_base },
     { "coroutine", luaopen_coroutine },
     { "table", luaopen_table },
     { "io", luaopen_io },
     { "os", luaopen_os },
     { "string", luaopen_string },
     { "utf8", luaopen_utf8 },
     //{ "bit32", luaopen_bit32 },
     { "math", luaopen_math },
     { "debug", luaopen_debug },
     { "package", luaopen_package },
     { NULL, NULL },
 };
(2)int luaL_dofile (lua_State *L, const char *filename);
①加载并运行指定的文件。 它是用下列宏定义出来:
(luaL_loadfile(L, filename) || lua_pcall(L, 0, LUA_MULTRET,0))
如果没有错误,函数返回假; 有错则返回真。
Lua和C++交互系列:
《Lua和C++交互 学习记录之七:C++全局函数注册为Lua模块》
《Lua和C++交互 学习记录之八:C++类注册为Lua模块》
《Lua和C++交互 学习记录之九:在Lua中以面向对象的方式使用C++注册的类》
Lua和C++交互 学习记录之一:C++嵌入脚本的更多相关文章
- Lua和C++交互 学习记录之九:在Lua中以面向对象的方式使用C++注册的类
		
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 在 ...
 - Lua和C++交互 学习记录之八:C++类注册为Lua模块
		
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...
 - Lua和C++交互 学习记录之七:C++全局函数注册为Lua模块
		
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...
 - Lua和C++交互 学习记录之六:全局函数交互
		
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...
 - Lua和C++交互 学习记录之五:全局数组交互
		
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...
 - Lua和C++交互 学习记录之四:全局table交互
		
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...
 - Lua和C++交互 学习记录之三:全局值交互
		
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...
 - Lua和C++交互 学习记录之二:栈操作
		
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...
 - php学习记录,使用script脚本
		
echo "<script>alert()</script>"; 原来还能这么用,之前以为echo就是普通的用来打印 同时还可以在script标签下使用lo ...
 
随机推荐
- 浅谈Java中的初始化和清理
			
引言 这篇文章我们主要介绍Java初始化和清理的相关内容,这些内容虽然比较基础,但是还是在这边做一个简单的总结,方便以后查阅. 初始化过程 Java尽力保证:所有变量在使用之前都会得到恰当的初始化(对 ...
 - http协议基础(二)请求和响应报文的构成
			
http协议用于客户端和服务器之间的通信,请求访问资源的一方称为客户端,而提供资源响应的一方称为服务器端. 下面就是客户端和服务端之间简单的通信过程 PS:请求必须从客户端建立通信,服务端没收到请求之 ...
 - liferay项目经验之BasePortlet
			
package com.ebizwindow.crm.portlet.base; import java.io.IOException; import java.io.InputStream; imp ...
 - csv到mysql数据库如何分割
			
这两天修改一个取XML文件存入到CSV,然后再存入到mysql的bug,bug是XML文件里面有个name字段,存入CSV文件里面的时候我们用“|”,来分割字段.但是name里面有时候也有 ...
 - 020-安装centos6.5后的生命历程
			
01.配置网络.修改了ifcfg-eth0文件内容. 1)ifcfg-eth0原来的内容如下: 2)ifcfg-eth0配置后的内容如下: 3)然后重启网络服务: 4)测试网络是否可通: 5)查看 ...
 - Azkaban 简介
			
本文简单介绍一下Azkaban及其特点.azkaban是一个开源的任务调度系统,用于负责任务的调度运行(如数据仓库调度),用以替代linux中的crontab. 一.Azkaban是什么? 1.1 A ...
 - python实现常量const
			
新建const.py: #-*-coding:UTF-8-*- #Filename: const.py # 定义一个常量类实现常量的功能 # # 该类定义了一个方法__setattr()__,和一个异 ...
 - excel选择元角分下拉菜单选择框自动变更数字
			
excel选择元角分下拉菜单选择框自动变更数字 (M2列),数据-->数据有效性-->在“允许”栏中选择序列-->在“来源”栏中输入:分,角,元单位倍数公式(M4列):=IF(M2= ...
 - CSS3实现8种Loading效果【二】
			
CSS3实现8种Loading效果[二] 今晚吃完饭回宿舍又捣鼓了另外几种Loading效果,老规矩,直接“上菜“…… 注:gif图片动画有些卡顿,非实际效果! 第一种效果: 代码如下: < ...
 - 教你如何用Nginx搭建一个安全的、快速的微服务架构
			
今天我们要谈论微服务以及如何使用Nginx构建一个快速的.安全的网络系统.最后,我们将向您展示一个使用Fabric模式如何非常快速和轻松地构建一个微服务的demo. 在我们探讨Fabric模式之前,我 ...