- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
简而言之:使用命令g++ -o clua clua.cpp -Wall -Iinclude -L liblua5.1.a liblua5.1.so 编译和链接嵌入lua的c++程序-ldl
,获取 liblua5.1.so: undefined reference to 'dlopen'
,等等。
几周来,我一直在尝试在我的 C++ 游戏中嵌入任何脚本语言,但没有成功,从 V8 到 Python 和 Squirrel。 Lua 被宣传为“易于设置、体积小”等,所以我想我会接受它。
我从 http://sourceforge.net/projects/luabinaries/files/5.1.5/Linux%20Libraries/ 得到了预编译的 lua 二进制文件(我为我的 32 位 ubuntu 13.something 使用了 lua-5.1.5_Linux26g4_lib.tar.gz)并有一个简单的示例程序:
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
int main()
{
lua_State *L = lua_open();
// load the libs
luaL_openlibs(L);
//run a Lua scrip here
luaL_dofile(L,"foo.lua");
printf("\nI am done with Lua in C++.\n");
lua_close(L);
return 0;
}
保存为“clua.cpp”并放在解压后的文件夹中(这样它与“liblua5.1.a”和“liblua5.1.so”在同一个目录中,lua头文件在一个名为“include”的文件夹)。现在,我正在尝试使用 g++ 通过控制台编译程序,这是确切的命令:
g++ -o clua clua.cpp -c -Wall -Iinclude
它运行完美,没有产生任何错误,并按预期创建了一个二进制文件“clua”。但是,当我尝试链接时:
g++ -o clua clua.cpp -Wall -Iinclude -L liblua5.1.a liblua5.1.so -ldl
我得到:
liblua5.1.so: undefined reference to `dlopen'
liblua5.1.so: undefined reference to `dlclose'
liblua5.1.so: undefined reference to `dlerror'
liblua5.1.so: undefined reference to `dlsym'
collect2: error: ld returned 1 exit status
我已经阅读了很多对有类似问题的人的回复,提供的选项是:
https://projects.coin-or.org/Ipopt/ticket/230说添加 LDFLAGS="-Wl,--no-as-needed"
或 --enable-dependency-linking
应该可以解决问题,现在,我不确定我的命令应该是什么样子,是否放置
g++ -o clua LDFLAGS="-Wl,--no-as-needed"clua.cpp -Wall -Iinclude -L liblua5.1.a liblua5.1.so -ldl
或
g++ -o clua -Wl --no-as-needed clua.cpp -Wall -Iinclude -L liblua5.1.a liblua5.1.so -ldl
,
g++ --enable-dependency-linking -o clua clua.cpp -Wall -Iinclude -L liblua5.1.a liblua5.1.so -ldl
或
g++ -o clua clua.cpp -Wall -Iinclude -L liblua5.1.a liblua5.1.so -ldl --enable-dependency-linking
但所有这些都给出了如下错误:
cc1plus: error: unknown pass dependency-linking specified in -fenable
https://projects.coin-or.org/Ipopt/ticket/229说:“另一种解决方法是添加配置标志 --disable-pthread-mumps”,我这样做了:
g++ -o clua --disable-pthread-mumps clua.cpp -Wall -Iinclude -L liblua5.1.a liblua5.1.so -ldl
得到了
cc1plus: error: unknown pass pthread-mumps specified in -fdisable
我是从 clua.cpp、liblua5.1.a 和 liblua5.1.so 所在的目录运行这一切的,那里有一个名为“include”的文件夹,其中包含标题。我在 32 位 Ubuntu 13 上运行它。(我认为是 10)。
现在,我该怎么做才能正确链接 Lua?
最佳答案
-L liblua5.1.a liblua5.1.so
看起来不对 → link options → -llua5.1
?
然后,据我所知,Ubuntu/Debian 上有两个不同的 lua 库,其中一个不允许动态库加载,因此 -llua5.1-c++
并获取它:sudo apt-get install lua5.1 liblua5.1-dev
我的建议:简化,如果您在使用 GNU Make 时使用 meta-make 生成器
关于c++ - 试图在 C++ 中嵌入 Lua, "undefined reference to ' dlopen'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23823031/
如何从 a.lua 传递值至 b.lua ? 让我们说在我的 a.lua我有这个变量代码。 local value = "Hello WOrld!" director:changeScene ("b"
我有一个使用命令行解释器运行的 lua 脚本,该脚本需要从文件加载表。 该表存储如下: create_object_action = { reflexive = true, which
我通过静态链接的方式在我的项目中嵌入了 Win32 上的 Lua(不,我不能切换到 DLL)。我想捆绑更多使用 native 代码的 Lua 扩展 - 而不仅仅是纯 .lua 文件。具体来说,我想捆绑
我需要一些帮助来解析 lua 文件的命令行。我正在执行一个 lua 文件,该 lua 文件有一个命令“dofile(2nd.lua-file)”,但是,我想通过第一个 lua 文件将一些参数传递给第二
这是我的代码示例: listOfPeople = {} listOfPeople["test"] = "hello" listOfPeople = nil “hello”字符串是否丢失并形成内存泄漏?
在一些源代码中,我看到了“Underscore.lua”模块的用法。 _ = require 'underscore' 描述如下: Underscore.lua is a Lua library th
在一些源代码中,我看到了“Underscore.lua”模块的用法。 _ = require 'underscore' 描述如下: Underscore.lua is a Lua library th
我一直在编程 io.write("How many languages do you speak?\n") answer = io.read() if (answer == 1) then io.wr
这个问题在这里已经有了答案: Getting multiple values from a function without creating a variables in LUA (2 个答案)
在阅读 Lua manual 时我遇到了这部分: 函数调用和赋值都可以以左括号开头。这种可能性导致了 Lua 语法中的歧义。考虑以下片段: a = b + c (print or io.write)(
假设我有以下循环: for name in poll() do if name == "quit" then return 0 end end "quit" 字符串是否
Pandoc 通过其 --lua-filter 参数原生支持 lua 过滤器。 但是,我想知道它使用的是什么版本的 lua,以及是否可以将 lua 模块(我相信它依赖于 C 代码)导入其中。 这是我调
这种语言是面向对象的语言吗? 它经常用作OO语言吗? 最佳答案 Lua 完全有能力 prototype-based类似于 JavaScript 的面向对象编程。 Prototype-based pro
我想从 C++ 传递一个 Lua 脚本(Lua 解释器可以处理的代码)并取回结果。 我在网上查看,但找不到任何可以帮助我的示例。我可以从 C++ 调用 Lua 函数,但这需要您使用 Lua 函数创建一
我正在阅读“在 Lua 中编程”,但我不明白这段代码中 Lua 中函数的行为: function newCounter () local i = 0 return function () --
我最近一直在查找 Lua 中的链表,并有一个简单的问题,到目前为止我还没有找到答案 local head = nil head = {next = head, value = "d"} head =
我知道有tonumber()函数,但是问题是我需要转换较大的数字,例如1000100110100011111010101001001001001100100101。我可以自己写,但是有没有办法将其集成
是否可以在 Lua 中对多个值执行算术运算。 我在 Windows 5.1.4 上使用 Lua。 目前我必须将多个值放入一个表中,然后解压缩它们,我希望能够跳过这一步。 是否可以。 这是我目前拥有的:
有什么区别吗 local splitPathFileExtension = function (res) end 和 function splitPathFileExtension(res) end
在下面的代码中,谁能解释一下 b,a = a,b 内部是如何工作的? -- Variable definition: local a, b -- Initialization a = 10 b = 3
我是一名优秀的程序员,十分优秀!