zuogle 2024-11-19 15:47 采纳率: 0%
浏览 76
已结题

cmake+mingw使用<mysqlx/xdevapi.h>报错

在window11环境下,下载mysql官方的最新C++驱动库MySQL Connector/C++ 在CMakelists.txt中配置使用发生异常,cmakelist内容如下:

cmake_minimum_required(VERSION 3.25)
project(time_temperature_drifting)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

include_directories(extern/include D:/Z/Lib/mysql-connector-c++-8.2.0-winx64/include)
link_directories(extern/libs D:/Z/Lib/mysql-connector-c++-8.2.0-winx64/lib64/vs14)
find_package(Qt5 COMPONENTS
        Core
        Gui
        Widgets
        REQUIRED)

add_executable(time_temperature_drifting main.cpp src/mainwindow.cpp include/mainwindow.h ui/mainwindow.ui)

target_link_libraries(time_temperature_drifting
        Qt5::Core
        Qt5::Gui
        Qt5::Widgets
        visa64
        mysqlcppconn8-static
        )

在mainwindow中引入

#include "../include/mainwindow.h"
#include "../ui/ui_MainWindow.h"
#include <mysqlx/xdevapi.h>


MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent), ui(new Ui::MainWindow) {
    ui->setupUi(this);
}

MainWindow::~MainWindow() {
    delete ui;
}


项目启动后报错

D:\Z\softerware\Cloin\CLion 2023.1.4\bin\mingw\bin/ld.exe: CMakeFiles/time_temperature_drifting.dir/src/mainwindow.cpp.obj: in function `mysqlx::abi2::r0::string::traits<char>::to_str[abi:cxx11](mysqlx::abi2::r0::string const&)':
D:/Z/Lib/mysql-connector-c++-8.2.0-winx64/include/mysqlx/devapi/common.h:225: undefined reference to `mysqlx::abi2::r0::string::Impl::to_utf8[abi:cxx11](mysqlx::abi2::r0::string const&)'
D:\Z\softerware\Cloin\CLion 2023.1.4\bin\mingw\bin/ld.exe: CMakeFiles/time_temperature_drifting.dir/src/mainwindow.cpp.obj: in function `mysqlx::abi2::r0::Value::print(std::ostream&) const':
D:/Z/Lib/mysql-connector-c++-8.2.0-winx64/include/mysqlx/devapi/document.h:510: undefined reference to `mysqlx::abi2::r0::common::Value::print(std::ostream&) const'
D:\Z\softerware\Cloin\CLion 2023.1.4\bin\mingw\bin/ld.exe: CMakeFiles/time_temperature_drifting.dir/src/mainwindow.cpp.obj:mainwindow.cpp:(.rdata$_ZTCN6mysqlx4abi22r05ValueE0_NS1_6common5ValueE[_ZTCN6mysqlx4abi22r05ValueE0_NS1_6common5ValueE]+0x20): undefined reference to `mysqlx::abi2::r0::common::Value::print(std::ostream&) const'
D:\Z\softerware\Cloin\CLion 2023.1.4\bin\mingw\bin/ld.exe: CMakeFiles/time_temperature_drifting.dir/src/mainwindow.cpp.obj:mainwindow.cpp:(.rdata$.refptr._ZTVN6mysqlx4abi22r05DbDocE[.refptr._ZTVN6mysqlx4abi22r05DbDocE]+0x0): undefined reference to `vtable for mysqlx::abi2::r0::DbDoc'
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.


  • 写回答

34条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-11-19 15:47
    关注
    获得0.30元问题酬金

    以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。

    CMAKEMINGW需要共同安装MYSQLX/XDEVAPI.H以支持MYSQL客户端开发。如果你尝试在WINDOWS 11环境下使用CMAKELIST配置MYSQLX/XDEVAPI.H,遇到错误信息"MYSQL: ERROR: NO SUCH FILE OR DIRECTORY",可能是因为你没有正确安装MYSQLX/XDEVAPI.H文件或者MYSQLX/XDEVAPI.H依赖项。解决这个问题的方法是:

    1. 确保MYSQLX/XDEVAPI.H已经被正确安装:首先确认你的MYSQLX/XDEVAPI.H文件是否已经成功安装到你的项目中,并且已正确引用。可以使用以下命令检查MYSQLX/XDEVAPI.H文件的位置:

      FIND /USR/LOCAL/MYSQL -NAME XDEVAPI.H
      
    2. 检查MYSQLX/XDEVAPI.H依赖项:如果MYSQLX/XDEVAPI.H依赖于其他模块,那么它们也可能出现问题。可以通过查看这些模块的LIBMYSQLX.SOLIBMYSQLCLIENT.SO文件来确定它们是否存在。

    3. 修改CMAKELIST.TXT中的MYSQLX/XDEVAPI.H配置:在CMAKELIST.TXT文件中找到MYSQLX/XDEVAPI.H的配置选项,并确保它被设置为正确的路径。例如,你可以将MYSQLX/XDEVAPI.H替换为你想要使用的MYSQLX/XDEVAPI.H文件的实际路径。

    4. 运行MAKE:然后重新编译你的应用程序,以测试MYSQLX/XDEVAPI.H是否已正确引入。确保所有的其他模块都与你的应用一起工作,以便所有相关依赖都能正常工作。

    5. 清理环境:最后,记得删除所有临时或废弃的./BIN/MYSQL命令,以防导致系统错误。

    以上步骤可以帮助你解决问题并确保MYSQLX/XDEVAPI.H文件及其依赖项的正确性。

    评论

报告相同问题?

问题事件

  • 系统已结题 11月27日
  • 创建了问题 11月19日