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