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,0,0,0);//相当于把整个lua文件的内容当成一个function来执行

     lua_getglobal(L,"lua_value");//从lua变量空间中将全局变量lua_value读取出来放入虚拟堆栈中

     int value = (int)lua_tonumber(L,-1);//从虚拟堆栈中读取刚才压入的变量,-1表示读取堆栈最顶端的元素

     printf("%d\n",value);

     return 0;

 }
//1.lua

lua_value = 100;

print "hello lua";

例子2:

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

  1 function mylua()
  2
  3     ADD(1,2)
  4     ADD(3,4);
  5
  6 end
  7
  8
  9 function hello()
 10
 11     print "hello lua and c";
 12
 13 end
时间: 2024-10-03 17:00:11

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

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

1. 基础 1.1 ASCII码 我们知道, 在计算机内部, 全部的信息终于都表示为一个二进制的字符串. 每个二进制 位(bit)有0和1两种状态, 因此八个二进制位就能够组合出 256种状态, 这被称为一个字 节(byte). 也就是说, 一个字节一共能够用来表示256种不同的状态, 每个状态相应一 个符号, 就是256个符号, 从 0000000到11111111. 上个世纪60年代, 美国制定了一套字符编码, 对英语字符与二进制位之间的关系, 做了统 一规定. 这被称为ASCII码, 一直

使用HTML语言和CSS开发商业站点(9)

#div_1 dl{ margin:0px;/*dl默认有外边距 跟ul一样*/ padding:0px; height:46px; margin-top:15px;} #div_1 dl dd{ margin:0px;/*dd默认有外边距*/ float:left; margin-left:10px; height:100%; line-height:46px; } 好的,使用HTML语言和CSS开发商业站点 就到这里结束    接下来是    使用Java实现面向对象编程 多多关注.评论,谢

C语言和OpenGL实现的24位色BMP解码器

我突然很喜欢发明轮子.. 早就想实现一下图片解码器和声音解码器. bmp的图片没有压缩,解码最简单,今天下午研究了一下bmp的编码,然后写了个24位色的解码器.(24位色的bmp没有调色板,8位和16位都有). 代码很简单,直接就能看懂,所以不说很多,直接贴了.. 1 #define _CRT_SECURE_NO_WARNINGS 2 3 #include <stdio.h> 4 #include <Windows.h> 5 #include <gl/freeglut.h&g

C语言和PHP语法相异点

C语言和PHP语法相异点技术 maybe yes 发表于2015-02-05 16:09 原文链接 : http://blog.lmlphp.com/archives/80  来自 : LMLPHP后院 PHP 的语法规则和 C 语言语法规则非常的相似,PHP 中很多内部函数调用的就是原生的 C 语言函数.由于两种语言的运行方式不同,导致在某些情况下语法也有一些差异,下面列举几个. 获取全局变量方式不同 在作用域中获取全局变量的值,PHP 必须借助 global 关键字获取或者使用超全局变量 $

用Swift语言和Sprite Kit复制微信飞机大战游戏

先上GitHub链接: https://github.com/songrotek/PlaneWar.git 接下来稍微讲解一下! 这个程序还有点Bug,见谅! 1 说明 游戏采用了Sprite kit最新的Per pixel for physic 技术,就是直接使用texture纹理作为sprite的physics body . 游戏的texture.atlas从别的打飞机项目中拷之并辛苦地分解了. 游戏编写借鉴了网上的objc代码! 2 游戏编写过程 添加背景-> 添加控制的飞机-> 添加发

C语言和matlab

分别用C语言和matlab实现二分法查找数据 从形式上能够发现区别是,matlab是一句一句编译的,而c语言是对一个完整的代码段进行编译的,并且c中有头文件(#include(...)),而matlab中没有,对于数值运算matlab是很简便强大的,c就有点繁琐,对于算法要求c相对更高点. 具体例子如下: C语言 #define M 10 #include<stdio.h> void main(){ static int a[M]={-12,0,6,16,23,56,80,100,110,11

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

Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较 1.首先写一个Go语言的简单WEB程序,就返回一个HelloWord! package main import ( f "fmt" "log" "net/http" // "strings" ) func sayhelloName(w http.ResponseWriter, r *http.Request) { // r.ParseForm() // f.P

1000道C语言和C++语言的练习题及答案 #0000-0050

汇集1000道C语言和C++语言的练习题 (例题.笔试题.编程题.算法设计题),由我亲自配上答案(点此查看). 语法题我就不出了,那个没意思,看书就可以了. 本贴汇集50题 (0000-0050),持续更新... 0001. 抽签题 从10个数中随机抽取5个数.(相当于双色球抽签问题) 0002. 插入排序 已有10个按增序排列好的整数1,3,5,7,9,11,13,15,17,19.要求把一个整数n插到数组中,保持增序排列. 0003. 数学公式类计算题 已经圆柱体的底半径r,高h,求体积v.

&lt;密码的实现&gt;在C语言和C++中如何实现输入数字或字符的时候,在指令框中不显示您输入的内容,显示“*”

一开始我以为用C语言和C++不能实现使用者输入密码的时候显示出“*”呢!在制作网页的时候可以设置属性为“password”,就可以不显示使用者输入的内容了..没想到偶然的机会试出了用while循环结构可以实现.以下是C语言和C++的代码,供初学者参考. 这是C语言实现的代码: 1 #include <stdio.h> 2 #include <conio.h> 3 int main() 4 { 5 int c; 6 char str[100], *p = str; 7 while (