C语言和Lua的交互
- //test.c
- #include <stdio.h>
- #include "lua.h"
- #include "lualib.h"
- #include "lauxlib.h"
- #include <stdlib.h>
- lua_State *L;
- int main(){
- L = luaL_newstate();//创建state以及加载标准库
- luaL_openlibs(L);//打开所有lua标准库加入到已经创建的state
- luaL_loadfile(L,"1.lua");//加载lua文件
- lua_pcall(L,,,);//相当于把整个lua文件的内容当成一个function来执行
- lua_getglobal(L,"lua_value");//从lua变量空间中将全局变量lua_value读取出来放入虚拟堆栈中
- int value = (int)lua_tonumber(L,-);//从虚拟堆栈中读取刚才压入的变量,-1表示读取堆栈最顶端的元素
- printf("%d\n",value);
- return ;
- }
- //.lua
- lua_value = ;
- print "hello lua";
例子2:
- //例子2 test.c
- #include <stdio.h>
- #include "lua.h"
- #include "lualib.h"
- #include "lauxlib.h"
- #include <stdlib.h>
- lua_State* L;
- int add(lua_State* L){
- int x = luaL_checkint(L,);
- int y = luaL_checkint(L,);
- printf("result:%d\n",x+y);
- return ;
- }
- int main(int argc, char *argv[])
- {
- L = luaL_newstate();
- luaL_openlibs(L);
- //lua_pushcfunction(L, add);
- //lua_setglobal(L, "ADD");
- //从堆栈上弹出一个值,并将其设置到对应的全局变量“ADD”中
- //它由一个宏定义出来:#define lua_setglobal(L,s) lua_setfield(L,LUA_GLOBALSINDEX,s)
- lua_register(L,"ADD",add);
- if (luaL_loadfile(L,"mylua.lua")){
- printf("error\n");
- }
- lua_pcall(L,,,);
- printf("----------------------");
- lua_getglobal(L, "mylua");
- lua_pcall(L,,,);
- printf("hello my lua\n");
- return ;
- }
- //mylua.lua
- function mylua()
- ADD(,)
- ADD(,);
- end
- function hello()
- print "hello lua and c";
- end
C语言和Lua的交互的更多相关文章
- Unicode与UTF-8互转(c语言和lua语言)
1. 基础 1.1 ASCII码 我们知道, 在计算机内部, 全部的信息终于都表示为一个二进制的字符串. 每个二进制 位(bit)有0和1两种状态, 因此八个二进制位就能够组合出 256种状态, 这被 ...
- C语言和C++中动态申请内存
在C语言和C++的动态内存的使用方法是不同的,在C语言中要使用动态内存要包含一个头文件即 #include<malloc.h> 或者是#include<stdlib.h> ...
- C语言和C++篇
C语言和C++篇 基本上所有主流的编程语言都有String的标准库,因为字符串操作是我们每个程序员几乎每天都要遇到的.想想我们至今的代码,到底生成和使用了多少String!标题上所罗列的语言,可以看成 ...
- c语言和java的区别
今晚读了一下c程序设计语言,这是一本经典书籍,发现C语言和java有很多是相同的,毕竟java是由c语言进化来的. 我大概从我自己的思考来谈谈不同点 1.c语言是面向过程,主要单位是函数,变量和函数的 ...
- CHENGDU1-Python编程语言和PEP8规范
CHENGDU1-Python编程语言和PEP8规范 PEP8规范6条? 答:PEP8规范说白了就是一种规范,可以遵守,也可以不遵守,遵守PEP8可以让代码的可读性更高. 代码编排:---缩进,4个空 ...
- 从C,C++,JAVA和C#看String库的发展(一)----C语言和C++篇
转自: http://www.cnblogs.com/wenjiang/p/3266305.html 基本上所有主流的编程语言都有String的标准库,因为字符串操作是我们每个程序员几乎每天都要遇到的 ...
- 大数据工具比较:R 语言和 Spark 谁更胜一筹?
本文有两重目的,一是在性能方面快速对比下R语言和Spark,二是想向大家介绍下Spark的机器学习库 背景介绍 由于R语言本身是单线程的,所以可能从性能方面对比Spark和R并不是很明智的做法.即使这 ...
- Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较
Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较 1.首先写一个Go语言的简单WEB程序,就返回一个HelloWord! package main import ( f " ...
- c语言和java以及安卓和苹果
苹果手机是本地,没有中间环节,速度快,基于Linux系统 安卓是通过虚拟机,影响速度 就像c语言和java c适用于架构小的地方,因为直接编译运行 而java用于架构比较大的地方,启动慢,启动之后效率 ...
随机推荐
- AX 2012 Form and Parts
在AX 2012 中系统标准FORM 中绝大部分都应用parts,form 和parts 是不可分开. 说到底parts到底是什么呢? Parts :我个人理解是为了在一个form中的显示更多信息而存 ...
- Android软件测试Monkey测试工具
前言: 最近开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括android测试框架.CTS.Monkey.Monkeyrunner.benchmark.其 ...
- php CI ip限制
public function index() { $ip = $this->input->ip_address(); if(!in_array($ip, $this->allowe ...
- JavaScript基础篇
写的不错,转 http://www.cnblogs.com/suoning/p/5656403.html
- Xcode常用的快捷键有哪些?
作者:吴白 原文链接:http://www.jianshu.com/p/de7806f6143b 手指在键盘上飞速跳跃,终端上的代码也随着飞舞,是的这确实很酷.优秀的程序员总是这么一群人,他们不拘于现 ...
- {CSDN}{英雄会}{砍树、石子游戏}
砍树 思路: 可以将题目意图转化为:给定一棵树,求其中最接近总权值一半的子树. DFS求每个节点的所有子节点的权值和,遍历每个节点,最接近总权值一半的即为答案.复杂度O(N). 石子游戏: 思路: 一 ...
- signtool.exe not found
When check the [sign the Xap File] checkbox, build project failed due to signtool.exe not found. Fol ...
- JSF 抽象和实现例子 (函数和属性)
ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/ ...
- LoadRunner参数化详解(转)
距离上次使用loadrunner 已经有一年多的时间了.初做测试时在项目中用过,后面项目中用不到,自己把重点放在了工具之外的东西上,认为性能测试不仅仅是会用工具,最近又想有一把好的利器毕竟可以帮助自己 ...
- jdk代理和cglib代理
1.jdk静态代理(静态代理和动态代理) 本质:在内存中构建出接口的实现类. 缺陷:只能对实现接口的类实现动态代理, 使用cglib可以对没有实现接口的类进行动态代理. 2.cglib动态代理 ...