从 lua 调用 C 代码
calling c code from lua
我试着按照这个:http://www.troubleshooters.com/codecorn/lua/lua_lua_calls_c.htm
我尝试按照指南中的说明编译 C 代码:
gcc -Wall -shared -fPIC -o power.so -I/usr/include/lua5.1 -llua5.1 hellofunc.c
但我得到了 http://pastebin.com/KQvA0qFH,我认为这是当您忘记包含库或框架时出现的错误,但我确实这样做了 -I/usr/include/lua5.1
如果重要的话我是 运行 os x 并且我用 brew
安装了 lua
我还不能评论所以我必须post它作为答案但是
根据错误我猜想您需要使用 -m32 开关进行编译才能构建 32 位库
你还没有告诉它在哪里可以找到lua5.1
使用-L
告诉编译器库所在的位置
从您自己的示例页面中可以看到 http://www.troubleshooters.com/codecorn/lua/lua_c_calls_lua.htm#_Anatomy_of_a_Lua_Call
这对我有用,但我不使用自制软件。 Lua 安装在 /usr/local
。
% gcc -Wall -bundle -undefined dynamic_lookup -fPIC -o power.so hellofunc.c
% lua
Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> require"power"
> print(square(2))
Top of square(), nbr=2.000000
4
> print(cube(2))
Top of cube(), number=2.000000
8
注意在编译行中使用 -bundle -undefined dynamic_lookup
而不是 -shared
并且没有 -llua5.1
。
一般来说,您不应该 link 将 Lua 核心库转换为动态库,例如这个。
我试着按照这个:http://www.troubleshooters.com/codecorn/lua/lua_lua_calls_c.htm
我尝试按照指南中的说明编译 C 代码:
gcc -Wall -shared -fPIC -o power.so -I/usr/include/lua5.1 -llua5.1 hellofunc.c
但我得到了 http://pastebin.com/KQvA0qFH,我认为这是当您忘记包含库或框架时出现的错误,但我确实这样做了 -I/usr/include/lua5.1
如果重要的话我是 运行 os x 并且我用 brew
安装了 lua我还不能评论所以我必须post它作为答案但是
根据错误我猜想您需要使用 -m32 开关进行编译才能构建 32 位库
你还没有告诉它在哪里可以找到lua5.1
使用-L
告诉编译器库所在的位置
从您自己的示例页面中可以看到 http://www.troubleshooters.com/codecorn/lua/lua_c_calls_lua.htm#_Anatomy_of_a_Lua_Call
这对我有用,但我不使用自制软件。 Lua 安装在 /usr/local
。
% gcc -Wall -bundle -undefined dynamic_lookup -fPIC -o power.so hellofunc.c
% lua
Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> require"power"
> print(square(2))
Top of square(), nbr=2.000000
4
> print(cube(2))
Top of cube(), number=2.000000
8
注意在编译行中使用 -bundle -undefined dynamic_lookup
而不是 -shared
并且没有 -llua5.1
。
一般来说,您不应该 link 将 Lua 核心库转换为动态库,例如这个。