1. //test.c
  2. #include <stdio.h>
  3. #include "lua.h"
  4. #include "lualib.h"
  5. #include "lauxlib.h"
  6. #include <stdlib.h>
  7.  
  8. lua_State *L;
  9.  
  10. int main(){
  11.  
  12. L = luaL_newstate();//创建state以及加载标准库
  13. luaL_openlibs(L);//打开所有lua标准库加入到已经创建的state
  14.  
  15. luaL_loadfile(L,"1.lua");//加载lua文件
  16.  
  17. lua_pcall(L,,,);//相当于把整个lua文件的内容当成一个function来执行
  18.  
  19. lua_getglobal(L,"lua_value");//从lua变量空间中将全局变量lua_value读取出来放入虚拟堆栈中
  20.  
  21. int value = (int)lua_tonumber(L,-);//从虚拟堆栈中读取刚才压入的变量,-1表示读取堆栈最顶端的元素
  22.  
  23. printf("%d\n",value);
  24.  
  25. return ;
  26.  
  27. }
  1. //.lua
  2.  
  3. lua_value = ;
  4.  
  5. print "hello lua";

例子2:

  1. //例子2 test.c
  2. #include <stdio.h>
  3. #include "lua.h"
  4. #include "lualib.h"
  5. #include "lauxlib.h"
  6. #include <stdlib.h>
  7.  
  8. lua_State* L;
  9. int add(lua_State* L){
  10.  
  11. int x = luaL_checkint(L,);
  12.  
  13. int y = luaL_checkint(L,);
  14.  
  15. printf("result:%d\n",x+y);
  16.  
  17. return ;
  18. }
  19.  
  20. int main(int argc, char *argv[])
  21. {
  22. L = luaL_newstate();
  23.  
  24. luaL_openlibs(L);
  25.  
  26. //lua_pushcfunction(L, add);
  27.  
  28. //lua_setglobal(L, "ADD");
  29. //从堆栈上弹出一个值,并将其设置到对应的全局变量“ADD”中
  30. //它由一个宏定义出来:#define lua_setglobal(L,s) lua_setfield(L,LUA_GLOBALSINDEX,s)
  31.  
  32. lua_register(L,"ADD",add);
  33.  
  34. if (luaL_loadfile(L,"mylua.lua")){
  35. printf("error\n");
  36. }
  37.  
  38. lua_pcall(L,,,);
  39.  
  40. printf("----------------------");
  41.  
  42. lua_getglobal(L, "mylua");
  43.  
  44. lua_pcall(L,,,);
  45.  
  46. printf("hello my lua\n");
  47. return ;
  48. }
  1. //mylua.lua
  2.  
  3. function mylua()
  4.  
  5. ADD(,)
  6. ADD(,);
  7.  
  8. end
  9.  
  10. function hello()
  11.  
  12. print "hello lua and c";
  13.  
  14. end

C语言和Lua的交互的更多相关文章

  1. Unicode与UTF-8互转(c语言和lua语言)

    1. 基础 1.1 ASCII码 我们知道, 在计算机内部, 全部的信息终于都表示为一个二进制的字符串. 每个二进制 位(bit)有0和1两种状态, 因此八个二进制位就能够组合出 256种状态, 这被 ...

  2. C语言和C++中动态申请内存

      在C语言和C++的动态内存的使用方法是不同的,在C语言中要使用动态内存要包含一个头文件即 #include<malloc.h> 或者是#include<stdlib.h>  ...

  3. C语言和C++篇

    C语言和C++篇 基本上所有主流的编程语言都有String的标准库,因为字符串操作是我们每个程序员几乎每天都要遇到的.想想我们至今的代码,到底生成和使用了多少String!标题上所罗列的语言,可以看成 ...

  4. c语言和java的区别

    今晚读了一下c程序设计语言,这是一本经典书籍,发现C语言和java有很多是相同的,毕竟java是由c语言进化来的. 我大概从我自己的思考来谈谈不同点 1.c语言是面向过程,主要单位是函数,变量和函数的 ...

  5. CHENGDU1-Python编程语言和PEP8规范

    CHENGDU1-Python编程语言和PEP8规范 PEP8规范6条? 答:PEP8规范说白了就是一种规范,可以遵守,也可以不遵守,遵守PEP8可以让代码的可读性更高. 代码编排:---缩进,4个空 ...

  6. 从C,C++,JAVA和C#看String库的发展(一)----C语言和C++篇

    转自: http://www.cnblogs.com/wenjiang/p/3266305.html 基本上所有主流的编程语言都有String的标准库,因为字符串操作是我们每个程序员几乎每天都要遇到的 ...

  7. 大数据工具比较:R 语言和 Spark 谁更胜一筹?

    本文有两重目的,一是在性能方面快速对比下R语言和Spark,二是想向大家介绍下Spark的机器学习库 背景介绍 由于R语言本身是单线程的,所以可能从性能方面对比Spark和R并不是很明智的做法.即使这 ...

  8. Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较

    Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较 1.首先写一个Go语言的简单WEB程序,就返回一个HelloWord! package main import ( f " ...

  9. c语言和java以及安卓和苹果

    苹果手机是本地,没有中间环节,速度快,基于Linux系统 安卓是通过虚拟机,影响速度 就像c语言和java c适用于架构小的地方,因为直接编译运行 而java用于架构比较大的地方,启动慢,启动之后效率 ...

随机推荐

  1. AX 2012 Form and Parts

    在AX 2012 中系统标准FORM 中绝大部分都应用parts,form 和parts 是不可分开. 说到底parts到底是什么呢? Parts :我个人理解是为了在一个form中的显示更多信息而存 ...

  2. Android软件测试Monkey测试工具

    前言: 最近开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括android测试框架.CTS.Monkey.Monkeyrunner.benchmark.其 ...

  3. php CI ip限制

    public function index() { $ip = $this->input->ip_address(); if(!in_array($ip, $this->allowe ...

  4. JavaScript基础篇

    写的不错,转 http://www.cnblogs.com/suoning/p/5656403.html

  5. Xcode常用的快捷键有哪些?

    作者:吴白 原文链接:http://www.jianshu.com/p/de7806f6143b 手指在键盘上飞速跳跃,终端上的代码也随着飞舞,是的这确实很酷.优秀的程序员总是这么一群人,他们不拘于现 ...

  6. {CSDN}{英雄会}{砍树、石子游戏}

    砍树 思路: 可以将题目意图转化为:给定一棵树,求其中最接近总权值一半的子树. DFS求每个节点的所有子节点的权值和,遍历每个节点,最接近总权值一半的即为答案.复杂度O(N). 石子游戏: 思路: 一 ...

  7. signtool.exe not found

    When check the [sign the Xap File] checkbox, build project failed due to signtool.exe not found. Fol ...

  8. JSF 抽象和实现例子 (函数和属性)

    ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/ ...

  9. LoadRunner参数化详解(转)

    距离上次使用loadrunner 已经有一年多的时间了.初做测试时在项目中用过,后面项目中用不到,自己把重点放在了工具之外的东西上,认为性能测试不仅仅是会用工具,最近又想有一把好的利器毕竟可以帮助自己 ...

  10. jdk代理和cglib代理

    1.jdk静态代理(静态代理和动态代理) 本质:在内存中构建出接口的实现类. 缺陷:只能对实现接口的类实现动态代理, 使用cglib可以对没有实现接口的类进行动态代理. 2.cglib动态代理     ...