CMake 中的 MySql 连接器/C++

问题描述 投票:0回答:1

我安装了 MySql 连接器,我想在我的 C++ 应用程序中使用它来连接到数据库,尽管我无法链接该库。我尝试了其他堆栈问题的方法,所以我这样做了:

set(FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR "C:/MySQL/MySQL Connector C++ 8.4")
include_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include)
include_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include/jdbc)
include_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include/jdbc/cppconn)
include_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include/mysqlx)
include_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include/mysqlx/common)
include_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include/mysqlx/devapi)
include_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include/mysql)
link_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/lib64)

target_link_libraries(2024__TAB_DSA__8_BRODZIAK
        PRIVATE cpr::cpr
        mysqlcppcon
)

target_compile_features(2024__TAB_DSA__8_BRODZIAK PRIVATE cxx_range_for)

在我的 CMakeLists.txt 中,但它会产生错误

C:\Program Files\JetBrains\CLion 2023.3.4\bin\mingw\bin/ld.exe: cannot find -lmysqlcppcon: No such file or directory

我已为已安装的连接器定义了路径并包含头文件,但我仍然无法使用这些文件本身,我不确定为什么。

c++ cmake linker mysql-connector
1个回答
0
投票

链接器似乎找不到名为

mysqlcppcon
的 MySQL Connector/C++ 库文件。这可能是由于以下几个原因造成的:

  1. target_link_libraries
    命令中的库名称可能不正确。
  2. link_directories
    中指定的路径可能不包含实际的库文件或不正确。
  3. 如果您使用不同版本的连接器或者您的系统是 32 位,该库可能位于不同的文件夹下,而不是
    lib64

您可以采取以下措施来解决该问题:

  • 验证库名称是否正确。通常,库文件名为

    mysqlcppconn
    。如果是这种情况,请更新您的
    target_link_libraries
    命令以使用正确的名称。

  • 检查库文件(用于静态链接的

    .lib
    或用于 Windows 上动态链接的
    .dll
    .dll.a
    )是否实际存在于
    ${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/lib64
    中。

  • 如果您的系统是 32 位或使用不同的目录结构,请确保您在正确的目录中查找库。

  • 您可能需要在

    target_link_libraries
    中指定不带扩展名的库文件的确切名称,例如,如果有一个名为
    libmysqlcppconn.lib
    的文件,只需提及
    mysqlcppconn

以下是如何调整 CMake 配置的示例:

set(FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR "C:/MySQL/MySQL Connector C++ 8.4")
include_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include)

link_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/lib64)

target_link_libraries(2024__TAB_DSA__8_BRODZIAK
 PRIVATE cpr::cpr
 mysqlcppconn # Assuming 'mysqlcppconn' is the correct name of your library
)

target_compile_features(2024__TAB_DSA__8_BRODZIAK PRIVATE cxx_range_for)

如果这些步骤都不能解决您的问题,请考虑仔细检查您是否已正确安装 MySQL Connector/C++,以及所有必要的环境变量是否已正确设置。此外,请确保您使用的 MySQL Connector/C++ 版本与编译器和构建工具兼容。

© www.soinside.com 2019 - 2024. All rights reserved.