CMake配置MySQL Connector/C++项目链接报错找不到库文件问题
构建失败核心原因
- 链接了不存在的依赖:你代码里根本没用到curl库,却在
target_link_libraries里加了curl,链接器找不到这个库直接报错,删掉即可。 - 编译器和库版本不匹配:你当前用MinGW编译,但你配置的库路径是
lib64/vs14,这是给Visual Studio的MSVC编译器用的二进制库,和MinGW的ABI不兼容,MinGW无法识别这类库文件。要么换MSVC作为项目工具链,要么重新下载适配MinGW的MySQL Connector/C++版本。 - 链接的库名错误:MySQL Connector/C++的JDBC动态库实际名称是
mysqlcppconn,不是你写的mysql-connector-c++,链接器按你给的名称找不到对应.lib/.a文件。 - 头文件配置冗余:你重复添加了多层include目录,导致头文件引用路径混乱,很容易触发头文件找不到的错误。
修正方案
- 工具链选择:如果不想重新下载库,直接在CLion的设置里把项目工具链切换为Visual Studio(需要提前安装Visual Studio,勾选C桌面开发组件),可以直接复用你现在下载的vs14版本库。如果坚持用MinGW,先删除现有Connector/C包,下载对应MinGW版本的安装包重新解压到项目目录。
- 替换CMakeLists.txt内容(以下以MSVC工具链为例,用MinGW的话把库路径换成对应MinGW版本的路径即可):
cmake_minimum_required(VERSION 3.22) project(inserting_database) set(CMAKE_CXX_STANDARD 23) # 配置MySQL Connector路径 set(MYSQL_CPPCONN_DIR ${CMAKE_SOURCE_DIR}/mysql-connector-c++) # 仅添加顶层include目录即可,不需要嵌套添加子目录 include_directories(${MYSQL_CPPCONN_DIR}/include) # 配置库搜索路径 link_directories(${MYSQL_CPPCONN_DIR}/lib64/vs14) add_executable(insert_debug main.cpp) # 链接正确的库名,删除无用的curl依赖 target_link_libraries(insert_debug mysqlcppconn) # 编译完成后自动把dll复制到可执行文件目录,避免运行时提示找不到动态库 add_custom_command(TARGET insert_debug POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${MYSQL_CPPCONN_DIR}/lib64/vs14/mysqlcppconn.dll" $<TARGET_FILE_DIR:insert_debug> )
- 修正main.cpp里的头文件引用,统一路径格式:
#include <jdbc/mysql_connection.h> #include <jdbc/cppconn/driver.h> #include <jdbc/cppconn/exception.h> #include <jdbc/cppconn/prepared_statement.h>
提示:不同版本的Connector/C++头文件目录结构可能有细微差异,如果你按上面写了还是找不到头文件,直接打开解压后的include文件夹看实际文件层级,对应调整路径即可。
内容的提问来源于stack exchange,提问作者Kuba103
相关产品推荐
相关产品推荐

