local?calc?
=
?require?
"
calc
"
print(calc.add(
20
,?
40
))
print(calc.sub(
20
,?
40
))
cc?
-
g?
-
D_DEBUG?
-
DDEBUG?
-
Wall?
-
I.
/
skynet
/
3rd
/
lua???
-
fPIC?
--
shared?lcalc.c?
-
o?calc.so
lua calc.lua
lua: error loading module 'calc' from file './calc.lua':
??????? ./calc.lua:3: too many C levels (limit is 200) in main function near '20'
stack traceback:
??????? [C]: in ?
??????? [C]: in function 'require'
??????? ./calc.lua:1: in main chunk
??????? [C]: in function 'require'
??????? ./calc.lua:1: in main chunk
??????? [C]: in function 'require'
??????? ./calc.lua:1: in main chunk
??????? [C]: in function 'require'
??????? ./calc.lua:1: in main chunk
??????? [C]: in function 'require'
??????? ...
??????? [C]: in function 'require'
??????? ./calc.lua:1: in main chunk
??????? [C]: in function 'require'
??????? ./calc.lua:1: in main chunk
??????? [C]: in function 'require'
??????? ./calc.lua:1: in main chunk
??????? [C]: in function 'require'
??????? ./calc.lua:1: in main chunk
??????? [C]: in function 'require'
??????? calc.lua:1: in main chunk
??????? [C]: in ?
一開(kāi)始以為是 require 路徑的問(wèn)題,但一直忽略了 too many C levels 這個(gè)錯(cuò)
當(dāng) require calc 時(shí), 它會(huì)一直死循環(huán)在加載 calc.lua
luaopen_calc() 改名 或 calc.lua 其中一個(gè)改名即可解決
當(dāng)初,在skynet 見(jiàn)到 luaopen_skynet_c() & require "skynet.c" 很奇怪,為什么Lua的作者會(huì)這樣設(shè)計(jì)語(yǔ)言
現(xiàn)在想起來(lái),好像有那么一點(diǎn)道理.