You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL Connector中mysqlx函数未定义引用问题求助

解决MySQL C++ Connector编译时的未定义引用问题

你遇到的undefined reference错误是典型的链接阶段缺失MySQL C++ Connector库文件导致的——编译器已经能找到头文件(你通过-I /usr/include/mysql-cppconn-8指定了路径),但链接器找不到实现mysqlx::abi2::r0::string::Impl::to_utf8这些函数的二进制库。

核心问题:缺少库链接参数

MySQL C++ Connector 8.x版本对应的核心库是mysqlcppconn8(旧版本可能是mysqlcppconn),你需要在编译命令中添加链接该库的参数,同时确保库文件的路径被链接器识别。

步骤1:确认库文件位置

首先找到库文件的实际路径,你可以用这个命令查找:

find /usr -name "libmysqlcppconn8.so"

常见的位置包括:

  • /usr/lib
  • /usr/local/lib
  • /usr/local/mysql-connector-c++-8.x/lib64(自定义安装时的路径)

步骤2:修改编译命令

在你的原有命令基础上,添加:

  • -L <库文件所在目录>:如果库不在系统默认链接路径,需要指定这个参数
  • -lmysqlcppconn8:告诉链接器要链接的库名(注意lib前缀和.so后缀要省略,链接器会自动补全)

修改后的完整编译命令示例(假设库在/usr/local/mysql-connector-c++-8.0/lib64):

g++ -I /usr/local/boost_1_70_0 -L /usr/local/boost_1_70_0 -I /usr/include/mysql-cppconn-8 -L /usr/local/mysql-connector-c++-8.0/lib64 -pthread -std=c++2a `pkg-config gtkmm-3.0 --cflags --libs` -lmysqlcppconn8 srv.cpp -o srv

如果库在系统默认路径(比如/usr/lib),可以省略-L参数,直接加-lmysqlcppconn8即可。

注意事项

  • 如果你用的是MySQL C++ Connector 7.x或更早版本,把-lmysqlcppconn8换成-lmysqlcppconn即可
  • 确保-l参数放在编译命令的后面(链接器需要先看到源文件,再知道要链接哪些库)

内容的提问来源于stack exchange,提问作者Pelle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:16:07