c++ - 使用 Lua 链接动态 lib.so 时出错

标签 c++ linux gcc lua shared-libraries

问题背景:

  • 操作系统: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)

最佳答案

问题已解决...

仍然用lua编译项目2...

编译命令:

g++ -Wall -fexceptions -O2 -o bin/Release/BattleConsole  libBattleCore.h main.cpp -L. -lBattleCore -llua -ldl

动态库(.so)应该复制到/usr/lib/ 然后 ldd BattleCosnole 将列出 libBattleCore.so =>/usr/... 不再“未找到”

我还想要一些其他方法来自定义.so的路由

谢谢

关于c++ - 使用 Lua 链接动态 lib.so 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25051027/

相关文章:

c++ - 使用 GCC 编译 FreeRTOS,使用 G++ 编译应用程序代码

c++ - 函数采用可变数量的不同类型的 initializer_lists

C++ if 函数中的语句

linux - shell过滤文件中禁止的单词

linux - Sed/awk - 如何删除开始模式和结束模式之间的换行符。

c - 映射一个大文件并扫描数据

c++ - Mingw32-w64 GCC 4.9.2 正则表达式错误,还是我不懂 C++?

c++ - 有没有办法允许 Windows 服务(非托管 C++)在共享网络文件夹上写入文件?

c++ - 2D Box Collisions - 我做错了什么? (C++)

c++ - proxygen 中的 http 客户端?