Tehero / lua / 从Lua中调用C函数

分享

   

从Lua中调用C函数

2014-03-11  Tehero

成功命令:

# cc -o my_math.so my_math.c -Wall -llua -ldl -lm -shared

# lua callc.lua


过程中出现的问题:

1. 无法编译过去,“ warning: implicit declaration of function ‘luaL_register’ [-Wimplicit-function-declaration] ”。由于 luaL_register()在Lua 5.2中已经改变了。要使用luaL_newlib()来代替。


代码下载:

http://pan.baidu.com/share/link?shareid=219097&uk=3489955754


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// my_math.c
  
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
  
#include <math.h>
#include <stdio.h>
  
  
static int my_math_sin (lua_State *L) {
lua_pushnumber(L, sin(luaL_checknumber(L, 1)));
return 1;
}
  
static int my_math_cos (lua_State *L) {
lua_pushnumber(L, cos(luaL_checknumber(L, 1)));
return 1;
}
  
  
static const luaL_Reg mathlib[] = {
{"my_cos",   my_math_cos},
{"my_sin",   my_math_sin},
{NULL, NULL}
};
  
/*
** Open my_math library
*/
LUALIB_API int luaopen_my_math (lua_State *L) {
  luaL_newlib(L, mathlib);
  return 1;
}


1
2
3
4
5
6
// callc.lua
  
my_math = require("my_math")
  
print(my_math.my_sin(3.14))
print(my_math.my_cos(3.14))

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。

    来自: Tehero > 《lua》

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多

    ×
    ×

    ¥.00

    微信或支付宝扫码支付:

    开通即同意《个图VIP服务协议》

    全部>>