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

Windows下MinGW编译MySQL C++连接器出现未定义引用问题

MySQL C++ Connector编译失败问题解决

我是MySQL C++ Connector的新手,尝试多种方式将C++与MySQL链接,但均未编译成功。

C++代码

#include <iostream>
#include <mysql_connection.h>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <jdbc.h>

using namespace std;

int main() {
    cout << "Hello world" << endl;
    sql::Driver *driver = get_driver_instance();
    sql::Connection *con = driver->connect("localhost:3306", "root", "root");
    sql::Statement *stmt;
    sql::ResultSet *res;

    con->setSchema("company");
}

CMakeLists.txt配置

cmake_minimum_required(VERSION 3.27)
project(CQL)

set(CMAKE_CXX_STANDARD 20)

add_executable(CQL main.cpp)

add_compile_options(
        -lmariadbcpp
        -lmysqlcppconn)

include_directories("C:/Program Files/MySQL/Connector C++ 8.0/include/mysql"
        "C:/Program Files/MySQL/Connector C++ 8.0/include/mysqlx"
        "C:/Program Files/MySQL/Connector C++ 8.0/include/jdbc"
        "C:/Program Files/MySQL/Connector C++ 8.0/include"
        "C:/Program Files/MySQL/Connector C++ 8.0"
        "C:/Program Files/MySQL/Connector C++ 8.0/bin"
)

target_link_directories(CQL PUBLIC "C:/Program Files/MySQL/Connector C++ 8.0")
target_link_directories(CQL PUBLIC "C:/Program Files/MySQL/Connector C++ 8.0/lib64")
target_link_directories(CQL PUBLIC "C:/Program Files/MySQL/Connector C++ 8.0/lib64/plugin")
target_link_directories(CQL PUBLIC "C:/Program Files/MySQL/Connector C++ 8.0/lib64/vs14")
target_link_directories(CQL PUBLIC "C:/Program Files/MySQL/Connector C++ 8.0/lib64/bin")
link_directories("C:/Program Files/MySQL/Connector C++ 8.0")
link_directories("C:/Program Files/MySQL/Connector C++ 8.0/lib64")
link_directories("C:/Program Files/MySQL/Connector C++ 8.0/lib64/plugin")
link_directories("C:/Program Files/MySQL/Connector C++ 8.0/lib64/vs14")
link_directories("C:/Program Files/MySQL/Connector C++ 8.0/bin")

编译错误信息

[2/2] Linking CXX executable CQL.exe
FAILED: CQL.exe 
cmd.exe /C "cd . && C:\msys64\mingw64\bin\c++.exe -g  CMakeFiles/CQL.dir/main.cpp.obj -o CQL.exe -Wl,--out-implib,libCQL.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -LC:/PROGRA~1/MySQL/CONNEC~2.0   -LC:/PROGRA~1/MySQL/CONNEC~2.0/lib64   -LC:/PROGRA~1/MySQL/CONNEC~2.0/lib64/plugin   -LC:/PROGRA~1/MySQL/CONNEC~2.0/lib64/vs14   -L"C:/Program Files/MySQL/Connector C++ 8.0/lib64/bin" -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/CQL.dir/main.cpp.obj: in function `check_lib':
C:/Program Files/MySQL/Connector C++ 8.0/include/jdbc/cppconn/driver.h:82:(.text+0x1f): undefined reference to `check(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' 
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/CQL.dir/main.cpp.obj: in function `get_driver_instance_by_name':
C:/Program Files/MySQL/Connector C++ 8.0/include/jdbc/cppconn/driver.h:95:(.text+0xba): undefined reference to `_get_driver_instance_by_name'
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

相关说明

  • 我认为add_compile_options配置无效,因为编译命令中未出现相关参数;
  • 使用Windows 11系统;
  • 当前使用的是Windows 64位x86版本的MySQL Connector,而我的系统是Windows 64位x64,不确定是否因此导致问题,下载时无x64版本可选;
  • 发现该问题的解决方案大多针对Linux环境。

解决方案

目前无法使用MinGW编译器解决该问题,切换至Linux系统或MSVC编译器即可解决。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 18:59:54