...
原创 2022-01-10 11:34:35
302阅读
LUA调用C(一)-----CAPI一:为什么要使用Lua调用C函数lua中调用C函数可以提高程序的运行效率。所以luaC的相互调用在工程中相当实用,本文就来讲解luaC相互调用的方法。二:LuaC函数实现原理 LuaC相互调用的首要问题是如何交换数据,lua API使用了一个抽象的栈与C语言交换数据,提供了压入元素,查询元素和弹出元素等功能的API操作栈,这里可以查看lua5.2中每个
转载 2024-02-16 17:53:24
314阅读
Lua可以调用C函数的能力将极大的提高Lua的可扩展性和可用性。对于有些和操作系统相关的功能,或者是对效率要求较高的模块,我们完全可以通过C函数来实现,之后再通过Lua调用指定的C函数。对于那些可被Lua调用的C函数而言,其接口必须遵循Lua要求的形式,即typedef int (*lua_CFunction)(lua_State* L)。简单说明一下,该函数类型仅仅包含一个表示Lua环境的指针作
Lua利用一个虚拟的堆栈来给C传递值或从C获取值。每当Lua调用C函数,都会获得一个新的堆栈,该堆栈初始包含所有的调用C函数所需要的参数值(Lua传给C函数的调用实参),并且C函数执行完毕后,会把返回值压入这个栈(Lua从中拿到C函数调用结果)。  于此相关的C API有几个比较重要的定义如下:  (1)typedef struct lua_State lua_State;   lua虚拟机(或叫
转载 2024-03-19 11:33:07
21阅读
注册表是window系统中非常重要的一部分,今天在网上查了一些文章学习了下,觉得其中有一句话总结的很经典:注册表是用来存储信息的。这句话虽然有点废,但是说的没错。当然,注册表中包含的内容非常多,远没有单纯存储信息那么简单。注册表的基础信息:数据存储结构为树。树的每一个节点就是一个键值。每个节点都能包含N多子键。一个键可以有很多键值。每个键值都有一个名字,以及一种指定类型的数据。我今天也是刚开始看注
主要思路:获取机器的CPU序列号,得到机器码。通过对机器码进行MD5运算之后得到注册码。将注册码写进注册表或系统目录。//1.在程序的入口处(winform)检测注册文件是否存在,如果不存在 //则提示用户注册文件损坏或者用户未注册,如果注册文件存在,则读取文件内容,判断注册码是否正确。 //在程序的入口函数所在的文件要引用 using System.IO;来进行文件操作。using System
有时我们会把C++导入到lua,这样方便在lua里面对C++进行操作,这在游戏编程里面经常使用,本文只是简单介绍一种实现。 1. lua里面面向对象的实现 在lua里面,我们可以这样操作表,如下: Acc...
原创 2022-01-10 11:30:58
486阅读
本节要讲的是如何将自己写的C++注册进Lua环境,让Lua去调用自定义的C++。网上有很多都是用原始的tolua++工具来注册C++的,我看了很多这样的教程,感觉操作起来十分麻烦,而且也很难看懂他们到底在讲什么。其实,在Cocos2d-x 3.2版本中,提供了bindings-generator脚本来封装toLua++的用法,从而节省了工作量。 【使用工具】Windows7 x64
转载 2023-07-20 13:48:11
64阅读
基于上述文章,做一些补充:将C代码编译为DLL文件,让LUA代码调用://mytestlib.cpp#include #include #include #include #include //待注册的C函数,该函数的声明形式在上面的例子中已经给出。//需要说明的是,该函数必须以C的形式被导出,因此extern "C"是必须的。//函数
摘要目前主流 openersty的开发都采用了 lor 这个框架,本文根据本拐的一些经验,总结了一些实践经验Lua 的错误处理机制error在 Lua的标准库中,有一个函数,用于程序向外界抛出异常,即 error ,其官方文档如下:error (message [, level])Terminates the last protected function called and returns m
  上一篇我们已经成功将Lua的运行环境搭建了起来,也成功在C++里调用了Lua函数。今天我来讲解一下如何在Lua里调用C++函数Lua作为一个轻量级脚本语言,他只包含了一些必要的系统库函数,当有需要时还得自己去写。有一次我要做一个两数异或的操作发现函数库里居然没有异或运算。不得不非常苦逼的自己去写。后来接触Lua深了之后才知道将这种"缺陷"可以由C函数来弥补。但要做到这一点对于一个
转载 2024-04-19 17:03:02
38阅读
笨木头花心贡献,啥?花心?不呢,是用心~正文: 1. Lua调用C++的函数 Lua要调用C++的函数还是蛮方便的,首先,我们来创建一个c++函数先: public:   static int getNumber(int num);       int HelloLua::getNumber( int num ) { CCLOG("get
转载 2024-05-27 21:49:58
169阅读
// BaseClass.lua name1.lua.txt 中: 第一行 local name1 = BaseClass(“name1”) local function __init(self,…) end local function __delete(self,…) end name1.__init = __init name1. __delete = __delete return
转载 2024-08-29 23:32:20
65阅读
本篇文章是一篇关于函数编译的帖子这个基本上是从LuaPlus那里弄来的,为什么不支lua_pushboolean(L, value); }i...
转载 2013-05-12 23:09:00
133阅读
2评论
这篇文章,我们将来介绍Lua何如调用C++的函数。我们来创建一个C++函数,新建一个,命名为HelloLua,头文件的代码如下:class HelloLua:pulibc CCLayer { CREATE_FUNC(HelloLua); virtual bool init(); static CCScene* scene(); static int getNumber(
转载 2024-04-09 22:23:38
56阅读
静态的成员函数,同静态数据成员类似,它也是属于,而不是属于某一个对象的。静态成员函数不能访问非静态的数据成员,它只能访问静态数据成员,也只能调用其它的静态成员函数。原因是:当前对象的地址(this)是被隐含地传递到被调用的函数的。但一个静态成员函数没有this指针,所以它无法访问非静态的成员函数。由于静态成员函数是属于的,所以,静态成员函数的调用方法为:  名::静态成员函数名();&nbs
基于上述文章,做一些补充:将C代码编译为DLL文件,让LUA代码调用://mytestlib.cpp #include <stdio.h> #include <string.h> #include <lua.hpp> #include <lauxlib.h> #include <lualib.h> //待注册的C函数,该函数的声明形式
转载 2024-05-08 15:53:48
40阅读
最近在进入Lua编程的状态,一度令我困惑的是,Lua提供的功能少的可怜,跟自备电池的python相比,可说是简陋了。连table的打印,都需要自己实现,也因此有了一打的第三方方案。后来我想明白了,以LuaC如此紧密的关系,只需要建立Lua的binding,那么丰富而性能强大的C库资源完全可以为Lua所用,这样就不愁功能缺失了。   关于C调用Lua,前段时间已经写过一篇短文了:《多语
转载 2024-05-02 16:56:19
62阅读
 Lua可以调用C函数的能力将极大的提高Lua的可扩展性和可用性。对于有些和操作系统相关的功能,或者是对效率要求较高的模块,我们完全可以通过C函数来实现,之后再通过Lua调用指定的C函数。对于那些可被Lua调用的C函数而言,其接口必须遵循Lua要求的形式,即typedef int (*lua_CFunction)(lua_State* L)。简单说明一下,该函数型仅仅包含一个表示Lua
转载 2024-04-06 20:57:40
22阅读
最近一段时间,一直在写底层驱动代码,印象最深刻的就是回调函数,因为你要将驱动封装好,接口预留,以方便给上层开发者调用。那么不再废话,立刻进入主题!1.什么是回调函数?百度百科解释:回调函数就是一个被作为参数传递的函数。在C语言中,回调函数只能使用函数指针实现其中提到了几个点: 1)作为参数传递的函数—本质是一个函数 2)函数指针—只能作为指针被调用总的意思就是将“A函数的地址”作为B函数的参数,
  • 1
  • 2
  • 3
  • 4
  • 5