成功命令:
# 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))
|