Just a simple example:

--The  c file:

#include <stdio.h>

#include "lua.h"

#include "luaconf.h"

#include "lualib.h"

#include "lauxlib.h"

#include "math.h"

static
int l_sin (lua_State *L) {

double d = lua_tonumber(L,
);  /* get argument */

lua_pushnumber(L, sin(d)); 
/* push result */

return

/* number of results */

}

int main()

{

float pi =
3.1415926;

float pidiv6 = pi /
;

float pidiv4 = pi /
;

float rt =
;

lua_State *L = luaL_newstate();

luaL_openlibs(L);

lua_pushcfunction(L, l_sin);
//Lua know the address of l_sin in c context

lua_setglobal(L,
"mysin");
//map l_sin to mysin will be called in lua context

if ( !luaL_dofile(L,
"./cal.lua") ) {

printf("load cal.lua successful\n");

}
else {

printf());

;

}

lua_getglobal(L,
"lsin");

lua_pushnumber(L, pidiv4);

if ( !lua_pcall(L,
, , ) ) {

rt = lua_tonumber(L, -);

}
else {

printf());

;

}

printf("rt = %f\n", rt);

return
0;

}

--cal.lua

print("start...")

function lsin ( angle )

return mysin(angle)

end

print("end...")

==output==

start...

end...

load cal.lua successful

rt = 0.707107

//Actually a more simpler way is to call mysin directly without cal.lua

lua_getglobal(L, "mysin");

lua_pushnumber(L, pidiv4);

, , )
) {

rt = lua_tonumber(L, -);

} else {

printf());

;

}

call lua function from c and called back to c的更多相关文章

  1. lua function

    This is the main reference for the World of Warcraft Lua Runtime. Note that these are mostly standar ...

  2. Lua function 函数

    Lua支持面向对象,操作符为冒号‘:’.o:foo(x) <==> o.foo(o, x). Lua程序可以调用C语言或者Lua实现的函数.Lua基础库中的所有函数都是用C实现的.但这些细 ...

  3. First Lua function running in C

    这是我在C里面跑出来的第一个Lua 文件, 纪念一下. 1.Set up envirnonment: Mac下面 Lua的src (即include) 和lib(binary)是分开的, 所以需要分别 ...

  4. lua执行字节码的过程介绍

    前面一篇文章中介绍了lua给下面代码生成最终的字节码的整个过程,这次我们来看看lua vm执行这些字节码的过程. foo = "bar" local a, b = "a& ...

  5. lua解释执行脚本流程

    #include "lua.hpp" #include <iostream> using namespace std; #pragma comment(lib, &qu ...

  6. Lua热更系统

    1.介绍 使用脚本开发游戏业务逻辑其中一个好处就是代码可线上热更,不停机修复bug.而热更代码的写法与需要被热更的文件的代码又有着密切的关系,本文介绍一种热更方法. 2.热更原理 Lua提供一个叫re ...

  7. 《The Evolution of Lua》读书笔记 1

    lua的优点: 可移植性 容易嵌入 体积小 高效率 这些优点都来自于lua的设计目标:简洁.从Scheme获得了很多灵感,包括匿名函数,合理的语义域概念   lua前身: 巴西被禁运,引入计算机软件和 ...

  8. 用VC编译lua源码,生成lua语言的解释器和编译器

    用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...

  9. Lua与C的交互

    Lua 与 C 的交互 Lua是一个嵌入式的语言,它不仅可以是一个独立运行的程序,也可以是一个用来嵌入其它应用的程序库. C API是一个C代码与Lua进行交互的函数集,它由以下几部分构成: 1.  ...

随机推荐

  1. django第9天(多表操作)

    django第9天 models类 class Book(Model): id = AutoField(primary_key=True) name = CharField(max_length=20 ...

  2. (转)ios应用导航模型

    Eko - MoboCentre 本文将介绍iPhone的导航风格,同时,也一并了解能够组织好应用内容和工具的导航方式.对于一个应用来说,最基础的操作就是基于页面间简单的移动,每张页面都完成一个任务或 ...

  3. 降维算法-PCA主成分分析

    1.PCA算法介绍主成分分析(Principal Components Analysis),简称PCA,是一种数据降维技术,用于数据预处理.一般我们获取的原始数据维度都很高,比如1000个特征,在这1 ...

  4. PAT Basic 1064

    1064 朋友数 如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”.例如 123 和 51 就是朋友数,因为 1+2+3 = 5+1 = 6,而 6 就是它 ...

  5. express中间件的next()方法

    next()方法出现在express框架中的中间件部分,由于node异步的原因,我们需要提供一种机制,当当前中间件工作完成之后,通知下一个中间件执行,因此一个基本的中间件应该是这种形式 var mid ...

  6. Hive 执行查询语句报错,由于内存空间不足导致

    org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Can ...

  7. HTML5教程之本地存储SessionStorage

    SessionStorage: 将数据保存在session对象中,所谓session是指用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间会话,也就是用户浏览这个网站所花费的时间就是sess ...

  8. JS 调用存储过程传递参数

    引用 #region 程序集 Newtonsoft.Json.dll, v4.5.0.0 // E:\Newtonsoft.Json.dll #endregion public DataTable R ...

  9. iOS学习笔记20-地图(二)MapKit框架

    一.地图开发介绍 从iOS6.0开始地图数据不再由谷歌驱动,而是改用自家地图,当然在国内它的数据是由高德地图提供的. 在iOS中进行地图开发主要有三种方式: 利用MapKit框架进行地图开发,利用这种 ...

  10. nginx进程属主问题讨论

    文章作者:luxianghao 文章来源:http://www.cnblogs.com/luxianghao/p/6107096.html 转载请注明,谢谢合作. 免责声明:文章内容仅代表个人观点,如 ...