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

使用CMake构建MariaDB Connector/C++项目时遇链接错误

解决MinGW下链接MariaDB Connector/C++ 1.1.4的未定义引用问题

问题根源

官方下载的MariaDB Connector/C++ 1.1.4是基于MSVC工具链编译的,而你使用的MinGW属于GCC工具链,两者的二进制库ABI不兼容,导致链接器无法识别MSVC编译的mariadbcpp.lib中的函数符号,从而出现sql::mariadb::get_driver_instance()未定义的错误。

解决方案

1. 编译MinGW版本的MariaDB Connector/C++

自行从源码编译适配MinGW的连接器版本:

  • 克隆指定版本的源码:
    git clone --branch 1.1.4 https://github.com/mariadb-corporation/mariadb-connector-cpp.git
    
  • 创建编译目录并进入:
    mkdir build && cd build
    
  • 用CMake配置MinGW编译环境(替换你的安装路径为实际路径):
    cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX="你的安装路径" -DCMAKE_BUILD_TYPE=Release ..
    
  • 编译并安装:
    mingw32-make && mingw32-make install
    

2. 修正CMakeLists.txt配置

编译完成后,修改项目的CMake配置,链接MinGW生成的库文件:

cmake_minimum_required(VERSION 3.28)
project(MariaDB_Connector_Sample)

set(CMAKE_CXX_STANDARD 20)

add_executable(MariaDB_Connector_Sample main.cpp)

# 链接MinGW编译的连接器库及依赖的MariaDB C连接器库
target_link_libraries(MariaDB_Connector_Sample PUBLIC
    "你的安装路径/lib/libmariadbcpp.a"
    "你的安装路径/lib/libmariadb.a"
)

target_include_directories(MariaDB_Connector_Sample PUBLIC
    "你的安装路径/include"
)

3. 备选方案:切换到MSVC工具链

如果不想自行编译,可以直接改用MSVC工具链构建项目:

  • 在CMake中选择MSVC生成器(比如Visual Studio 17 2022),直接使用官方提供的MSVC版本连接器,此时原有的CMakeLists.txt配置即可正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:43:16