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用于架构比较大的地方,启动慢,启动之后效率 ...
随机推荐
- (转)winform Form 淡入淡出效果
原文地址:http://blog.csdn.net/a237428367/article/details/5933565 using System.Runtime.InteropServices; p ...
- 51. Word Search
Word Search Given a 2D board and a word, find if the word exists in the grid. The word can be constr ...
- C#的 is 和 as 类型转换
C#在操作类型转换时,提供了 as 和 is , 显式,隐式类型转换,由于显式和隐式类型转换比较容易理解,这里主要介绍下 is 和 as 的转换. 1. is 转换 is 操作符指定一个对象类型 ...
- JS-改变页面的颜色(二)
需求:点击页面的按钮,改变页面的颜色 思路:一先画出最简单的页面,二想办法获取页面的body节点,三想办法修改body节点的背景颜色属性,四通过一个方法获取随机的颜色值 和第一个例 ...
- 百度地图API示例之设置级别setZoom与禁止拖拽disableDragging
百度地图API示例之设置级别setZoom与禁止拖拽disableDragging 设置级别 <html> <head> <meta http-equiv="C ...
- XidianOJ 1182 Chinese Paladin – Qi’s troubles
题目描述 As we all know, Xiahou Jinxuan (Chinese Paladin 5 Prequel's protagonist) and Yue Jinzhao (Chine ...
- window date type
Most string operations can use the same logic for Unicode and for Windows code pages. The only diffe ...
- input输入子系统
一.什么是input输入子系统? 1.Linux系统支持的输入设备繁多,例如键盘.鼠标.触摸屏.手柄或者是一些输入设备像体感输入等等,Linux系统是如何管理如此之多的不同类型.不同原理.不同的输入信 ...
- 英语语法 It all started the summer before second grade when our moving van pulled into her neighborhood
It all started the summer before second grade when our moving van pulled into herneighborhood It all ...
- IOC和AOP使用扩展 多种方式实现依赖注入
多种方式实现依赖注入 1.Spring 使用setter访问器实现对属性的赋值, 2.Spring 构造constructor方法赋值, 3.接口注入 4.Spring P命名空间注入直接量 sett ...