//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的交互的更多相关文章

  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. 黑马程序员_JAVA基础知识总结3

    ------- android培训.java培训.期待与您交流! ---------- Java源文件的扩展名是.java,编译之后生成.class的文件.所有的类都有一个共同的继承祖先Object类 ...

  2. zmap使用笔记

    zmap使用笔记 zmap, 一个网络端口开放性的快速扫描工具.至于这个工具的特色,配置参数,和比的工具的对比,不做介绍.只记录一下近期使用过程中,遇到的问题.软件版本:2.1.1 传言与现实 传言: ...

  3. oracle查看所有表的数据量并排序

    源地址:http://blog.csdn.net/zhanggnol/article/details/6683697 select t.table_name,t.num_rows from user_ ...

  4. 新建jsp报错“The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path”

    今天新建jsp文件时,就报错“Visual Page Editor has experimental support for Windows 64-bit”,然后刚好stackoverflow上面有这 ...

  5. Opera放弃自家内核转投WebKit的背后(转)

    Opera在2月13日宣布用户突破3亿,并且带着这3亿用户投入WebKit阵营,自家的Presto内核将会走入历史.Opera为什么选择在现在这个时间点放弃自有内核?之前Opera的坚持自主研发一直被 ...

  6. Windows上x86程序正常但x64程序崩溃问题

    先看下面代码: #include <stdio.h> #include <windows.h> #include <memory> class Test { pub ...

  7. 解决ewebeditor for php在IE8下报editor.js错误的解决方案

    打开editor.js,寻找如下代码: if (element.YUSERONCLICK) eval(element.YUSERONCLICK + "anonymous()"); ...

  8. hadoop单机and集群模式安装

    最近在学习hadoop,第一步当然是亲手装一下hadoop了. 下面记录我hadoop安装的过程: 注意: 1,首先明确hadoop的安装是一个非常简单的过程,装hadoop的主要工作都在配置文件上, ...

  9. node.js入门及express.js框架

    node.js介绍 javascript原本只是用来处理前端,Node使得javascript编写服务端程序成为可能.于是前端开发者也可以借此轻松进入后端开发领域.Node是基于Google的V8引擎 ...

  10. Android 中的 WebView实现 Html5 标签网页加载

    自Android 4.4起,Android中的WebView开始基于Chromium(谷歌浏览器)支持浏览器的一系列功能,webkit解析网页各个节点,这个改变,使得WebView的性能大幅度提升,并 ...