之前在《C/C++和Lua是如何进行通信的?》一文中简单的介绍了lua与宿主之间的通信。简单的说两种不同的语言之间数据类型不一样又如何进行数据交换呢?那就是lua_State虚拟栈,通过栈操作和lua库函数,我们很轻松就能完成两者之间的数据交换。 开始之前,明确几个问题,lua中的虚拟栈的索引编号问题(我们假设栈大小为n),编号1是栈底,n视栈顶,编号-1是栈顶,-n是栈底。lua中的库函数需要访问和操作栈上的数据都是通过索引编号...
Lua与C++交互初探之Lua调用C++上一篇我们已经成功将Lua的运行环境搭建了起来,也成功在C++里调用了Lua函数。今天我来讲解一下如何在Lua里调用C++函数。Lua作为一个轻量级脚本语言,他只包含了一些必要的系统库函数,当有需要时还得自己去写。有一次我要做一个两数异或的操作发现函数库里居然没有异或运算。不得不非常苦逼的自己去写。后来接触Lua深了之后才知道将这种"缺陷"可以由C函数来弥补。但要做到这一点对于一个对C只知道if ...
1、新建Win32控制台DLL项目;2、添加测试头文件--------------------------------------#include "lua.h"#include "lauxlib.h"#include "lualib.h"--------------------------------------3、添加包含目录 D:\Program Files\lua\include (lua安装文件夹include目录)项目右键->属性->配置属性->VC++目录->包含目录 添加 D:\Program Files %28x86%29\lua\include4、添加lua51.lib项目右键->属性->配置属性->链接器->附加库目录 添加...
版本是 lua5.1 vs 2013 转载自 http://blog.csdn.net/wangbin_jxust/article/details/37557807 一、打开vs2010二、创建项目新建项目->win32控制台应用程序->下一步->应用程序设置中选择静态库,不勾选预编译头->完成。具体如下图:三、拷贝源码将lua源码中的*.h文件拷贝到项目的头文件文件夹下,将lua源码中的*.c文件拷贝到项目的源文件文件夹下。四、生成lua.lib项目右键->生成。此时即可在项目的Debug文件夹下看到生成的 lua.lib了...
在Lua Code中注册C/C++的枚举非常容易,就像注册全局变量一样。我们使用枚举名称作为命名空间,来避免注册的枚举发生冲突。注册的枚举存储在全局环境(线程环境)中。当在Lua Code中访问枚举时,通过名称来访问对应的值。sample_9.cpp c++代码如下://在Lua Code中注册的enum,为了避免冲突,以名称作为enumTable来存储
enum Week
{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday,
};
//定义宏用来方便使用设置键值
#define...
// text.cpp : Defines the entry point for the console application.
//
#include <iostream>
#include <fstream>
#include <string>
usingnamespace std;extern"C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#pragma comment(lib,"lualib.lib")
lua_State * L;
LUALIB_API int textC(lua_State *L)
{if(L == nullptr){return0;}cout<<"This msg from C++"<<endl;return0;
}
LUALIB_API int textC1...
本系列教程主要介绍如何在C/C++程序里面嵌入Lua脚本,我打算从以下几个方面来介绍:1.如何在C/C++里面嵌入Lua脚本2.Lua访问C/C++数据结构(这里面要介绍类,结构体,函数,变量,枚举等数据类型在lua里面如何访问)3.C/C++访问Lua的数据,主要是基本数据类型,函数和Table4.Cocos2D-X里面的Lua绑定(含自动绑定与手动绑定)5.Cocos2D-x里面Lua和C/C++相互调用6.Cocos2D-x里面Lua和Java相互调用7.Cocos2D-x里面Lua和Objective-C相互...
在程序开发过程中,程序员经常用到的一个功能就是查找引用(Find Reference),Visual Studio里面的对应功能是“查找所有引用”(Find All References)。 我在使用notepad++写代码的时候一开始一直因为找不到类似的功能而苦恼。只好每次使用“在文件中查找”(Find in files)来找到所有引用。 但是这样每次查找都需要遍历目标目录的整个文件系统,文件多的话会耗费很长时间。 notepad++有插件可以实现查找引用的功能。相比于...
作为一种嵌入式语言,lua提供了一套完备的 C API来帮助 lua 与 宿主程序进行交互。因此使用 C 或者 C++ 来为lua编写模块是很容易的。看一下lua (5.1) 中对 string 模块的封装源码 lstrlib.c在 lstrlib.c 最后有这样的代码/** 将函数名与实际调用函数记录在一个 struct 中,并组成一个数组 --- 有点 lua 代码的赶脚 ---**/staticconst luaL_Reg strlib[] = {{"byte", str_byte},{"char", str_char},{"dump", str_dump},{"fi...
#include <iostream>
#include <Windows.h>
#include <assert.h>
#define Main mainvoid wchar2char(char *Buf,const wchar_t* wchar)
{int len = WideCharToMultiByte(CP_ACP, 0, wchar, wcslen(wchar), NULL, 0, NULL, NULL);WideCharToMultiByte(CP_ACP, 0, wchar, wcslen(wchar), Buf, len, NULL, NULL);
}
//————————————————
//版权声明:本文为CSDN博主「bailang_zhizun」的原创文章,遵循CC 4.0 by - sa版...
第一步(环境准备工作):工具:●LuaForWindows_v5.1.4-46.exe傻瓜式安装。 作用:此工具可以在windows环境下编译运行Lua脚本程序。安装完成后会有两个图标:Lua和SciTE。Lua是命令行,SciTE是图形运行环境,两个都可以编译运行,看个人喜好。●VS2012大家都会,此处省略若干字... 第二步(在VS2012下新建并运行C++中嵌入Lua脚本程序):●打开VS2012,新建一个控制台的C++空项目●配置Lua的安装路径和引用相关Lua库 1、右击新创...
step1、搭建好vs和lua相交互的环境:1.下载一个lua5.3的源码;2.有Lua_lib.lib这个文件;3.开始配置:鼠标放在工程名那:右键选属性: 把包含目录点开进行编辑: 地址就选上面有源码的文件路径。如上,把引用目录点开进行编辑地址是选lib文件的地址如上,把库目录点开进行编辑地址也是lib文件的地址step2、给这个工程添加头文件:extern"C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
};这样前期准备工作就做好...
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">前面lua进阶里面讲到用C++读取二维表,但是最近又有了新的需求,lua文件里面出现了三维表,自己摸索了一下,终于找到了解决的方式,在这里面与大家分享一下</span>我的lua文件里面的三维表结构如下stage = {
{m_nId = 105,m_nBoss = 0,m_nScoreList = {300,450,600},m_nRewardList = {230401201,13020801,13010411},m_nDropItemL...
到这为止,大家对Lua和C++之间的通信应该有些熟悉了,今天我们来介绍最后一个操作。
(旁白:什么?最后一个?要结束了么?太好了~!)上一章传送门:http://www.jb51.net/article/55097.htm1. Lua调用C++的函数Lua要调用C++的函数还是蛮方便的,首先,我们来创建一个c++函数先:复制代码 代码如下:
public:static int getNumber(int num);
int HelloLua::getNumber( int num ) {
CCLOG("getNumber num = %d", num);
retur...
Lua这类脚本语言在处理业务逻辑作为配置文件的时候方便省事 但是在大量需要 运算的地方就显得略微不足 按照 Lua内建排序算法 对比C/C++ PHP Java等的快速排序算法进行一下比较。 快速排序算法是基于冒泡排序,优化而来,时间复杂度T(n)=O(nLog2n) ,可见内部采用了二分策略 。 发现在LuaIDE LDT下直接运行效率要比 通过C++加载运行Lua脚本效率高的多 拿500W个数据排序 来说 ,脚本如下 同样的排序脚本Lua解释器的内置排序算...