1

我试图遵循这个: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,我认为这是您忘记包含 lib 或框架时遇到的错误,但我做了 -I/usr/include/lua5.1

如果重要的话,我正在运行 os x 并用 brew 安装了 lua

4

3 回答 3

3

你还没有告诉它在哪里可以找到 lua5.1

用于-L告诉编译器库所在的位置

从您自己的示例页面中,它说要查看http://www.troubleshooters.com/codecorn/lua/lua_c_calls_lua.htm#_Anatomy_of_a_Lua_Call

于 2016-05-11T13:48:01.443 回答
0

我还不能发表评论,所以我必须将其发布为 Answer BUT

从错误中我猜您需要使用 -m32 开关进行编译才能构建 32 位库

于 2016-05-11T13:26:16.037 回答
0

这对我有用,但我不使用自制软件。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.

一般来说,你不应该将 Lua 核心库链接到动态库中,比如这个。

于 2016-05-11T13:48:33.243 回答