C++ MySQL++ 未定义对 dlclose 的引用

标签 c++ ubuntu gcc mysql++

因此,在带有 GCC 的 Ubuntu 12.04 LTS x64 下使用 mysql++ 编译程序时出现此错误。详细说明:

/usr/lib/i386-linux-gnu/libmysqlclient.a(client_plugin.c.o): In function add_plugin:
(.text+0x253): undefined reference to dlclose
/usr/lib/i386-linux-gnu/libmysqlclient.a(client_plugin.c.o): In function mysql_client_plugin_deinit:
(.text+0x2c7): undefined reference to dlclose
/usr/lib/i386-linux-gnu/libmysqlclient.a(client_plugin.c.o): In function mysql_load_plugin_v:
(.text+0x524): undefined reference to dlopen
/usr/lib/i386-linux-gnu/libmysqlclient.a(client_plugin.c.o): In function mysql_load_plugin_v:
(.text+0x54a): undefined reference to dlsym
/usr/lib/i386-linux-gnu/libmysqlclient.a(client_plugin.c.o): In function mysql_load_plugin_v:
(.text+0x67f): undefined reference to dlerror
/usr/lib/i386-linux-gnu/libmysqlclient.a(client_plugin.c.o): In function mysql_load_plugin_v:
(.text+0x695): undefined reference to dlclose

我已经安装了:libmysql++-3、libmysqlclient18 和 libmysqlclient18-dev、libdml3 和 libdml3-dev 库按以下顺序链接:

/usr/lib/libmysqlpp.a
/usr/lib/i386-linux-gnu/libdl.a
/usr/lib/i386-linux-gnu/libmysqlclient.a

作为链接器包含的目录,我有:

/usr/lib
/usr/lib/i386-linux-gnu

最佳答案

将评论变成答案。以免丢失:

您必须仅在 -lmysqlclient 之后链接 -ldl。链接顺序很重要。

关于C++ MySQL++ 未定义对 dlclose 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18858799/

相关文章:

c++ - 如何使二进制文件与不同的发行版兼容

bash - 有没有办法在 ubuntu 18 的 crontab 作业脚本中使用 .envrc

c++ 链接器错误 'relocation R_X86_64_32 against ` .rodata.str1.1' Linking CXX shared library libsrt.so

apache - Ubuntu(和 apache2)升级后本地 laravel Web 应用程序无法正常工作

c++ - 用于处理用户定义的类型和结构的模板

c++ - 声明友元函数时出现变量作用域错误

linux - 与 gcc 5 的 OCCI 链接错误

c++ - 在 C++ 中优雅地移植 lambda 表达式

C++17类模板推导const-ness

c++ - 指向具有不同模板参数的类模板的指针