【发布时间】:2024-01-17 10:50:01
【问题描述】:
问题背景:
-
操作系统:Linux Ubuntu
-
编译器:gcc
-
语言:C++
-
2个项目:
-
项目1:使用Lua构建动态库; (libBattleCore.so)
-
项目 2:使用项目 1 生成的 libBattleCore.so 构建控制台应用程序
-
问题描述
项目2编译命令:
g++ -Wall -fexceptions -O2 -o bin/Release/BattleConsole libBattleCore.h main.cpp -I/home/Downloads/lua-5.2.3/install/include/ -L. -lBattleCore
错误信息
./libBattleCore.so: undefined reference to `luaopen_table'
./libBattleCore.so: undefined reference to `lua_getfield'
./libBattleCore.so: undefined reference to `lua_isstring'
...
./libBattleCore.so: undefined reference to `lua_tolstring'
collect2: error: ld returned 1 exit status
有什么问题和解决方案是什么?谢谢
附加信息
项目 1 构建命令:
g++ -O2 -fPIC -shared -o bin/Release/libBattleCore.so -I/home/Downloads/lua-5.2.3/install/include/ -L/home/Downloads/lua-5.2.3/install/lib/ -llua Basic_Battle/Arsenal.cpp Basic_Battle/BaseEntity.cpp ...(lots of cpp files)
ldd libBattleCore.so :
linux-vdso.so.1 => (0x00007ffff7ffe000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f008f35a000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f008f054000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f008ee3d000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f008ea77000)
/lib64/ld-linux-x86-64.so.2 (0x00007f00946a8000)
【问题讨论】:
-
ldd libBattleCore.so输出什么? -
我已经编辑了这个问题。似乎 libBattleCore.so 不包含 lua 中的任何内容,那么如何将 lua 嵌入其中?
-
缺少lua的所以,加
-llua看看是否正常 -
项目1构建命令中已经有-llua...在项目2构建命令中添加-llua时出现同样的错误信息
标签: c++ linux gcc lua shared-libraries