链接Linux上嵌入Lua的静态lib时出错
Error of linking a static lib embedded with Lua on Linux
更新
在Project 2中(控制台(使用-ldl和链接liblua.a后,编译是可以的,但当它运行时,它在运行Lua函数时就崩溃了,并出现错误Segment fault(核心转储(。
问题背景:
-
操作系统:Linux Ubuntu
-
IDE:代码块
-
过渡语:C++
-
2项目:
-
项目1:使用Lua的静态库;
-
项目2:控制台应用程序,使用项目1 生成的库
-
问题描述
项目1(静态库(已成功生成。
问题是,当构建项目2时,它说项目1的lib中的Lua函数是未定义的,这是错误消息的一部分:
g++ -o bin/Release/BattleConsoleCB obj/Release/main.o -s
../BattleConsole/libBattleCore.a
../BattleConsole/libBattleCore.a(DataLoader.o):
In function `boolDataLoader::GetNumber<double>(char const*, double&) [clone .isra.5]':
DataLoader.cpp:(.text+0x13): undefined reference to `lua_settop'
DataLoader.cpp:(.text+0x1e): undefined reference to `lua_getglobal'
DataLoader.cpp:(.text+0x2b): undefined reference to `lua_isnumber'
DataLoader.cpp:(.text+0x3e): undefined reference to `lua_tonumberx'
DataLoader.cpp:(.text+0x51): undefined reference to `lua_settop'
注意,";DataLoader.cpp";来自项目1,该项目本应构建在静态库"中;libBattleCore.a";它本应嵌入Lua。
如何解决这个问题?谢谢你的帮助。
附加信息:
项目2应当包括:;libBattleCore.h"main.cpp";,libBattleCore.a
项目1:CodeBlockbuilding选项包括";Lua/install/include";在编译搜索目录中;Lua/install/lib";在链接搜索目录中
使用VS2012 在Win上成功构建并运行了相同的代码
如果需要其他任何东西,请通知,我会添加它。
我是linux和g++的新手-(
感谢
没有50个代表我无法发表评论。不支持匿名回复。所以我只能在这里发帖。
这已经几年了,但对于g++,我认为是您在命令行上列出的.o文件,对于库,您使用-L指定要搜索的目录,然后使用-lname包含库。(其中name缺少前导的lib和尾随的.a。(例如-L/BattleConsole-lBattleCore
哦,-lfo-lbar与-labar-lfo的排序至关重要,这决定了哪个库可以使用另一个库的代码。
目前还不清楚静态库是否需要包含其他库中的代码。您可能需要(按照正确的顺序(链接到project1中的库。
尝试"nm">。就像在nm中一样——解谜libBattleCore.a|grep这将让您看到每个库中到底包含了什么man nm或http://linux.die.net/man/1/nm可以帮你弄清楚字母代表什么。例如,U是未定义的(由使用,未提供(T在文本(代码(段中定义W和V是弱定义的。等等
- cmake cuda在Windows上单独的编译静态LIB链接错误,但在Ubuntu上没有
- 如何添加其他CMAKE模块的静态LIB
- 调试模式下的dlib静态lib错误
- QMAKE:同时使可执行文件和静态lib
- VS 2017 C 静态LIB与 /MD项目依赖性问题编辑
- 在执行任何程序代码之前,通过静态 .lib 链接到 dll 的程序会发生什么情况
- buildroot:仅构建一个包裹作为共享和静态lib,所有其他包装仅共享
- 未解决的外部符号,带有静态lib,它使用了另一个静态lib
- 在Java(JNI)中与Mingw C 一起编译64位静态LIB
- 内部在具有不同版本的Visual Studio的静态LIB中使用STL
- 如何确定升压路径的静态LIB路径
- 如何在我的项目中使用fftw dll导入库.lib作为静态.lib
- 在静态LIB和DLL中使用静态成员 - 成员值正在重置
- 静态.lib文件如何相互链接
- 如何将nana编译成静态lib
- 链接Linux上嵌入Lua的静态lib时出错
- MSVC在静态.lib文件中列出符号
- c++封装dll到静态lib
- 为什么当我只使用静态.lib时,Windows会告诉我找不到.dll文件
- C++Visual Studio-多项目解决方案-“;静态lib”;vs“;包括目录”;