gpt4 book ai didi

c++ - 如何将 C++ MySQL 连接器库链接到 Cmake?

转载 作者:行者123 更新时间:2023-11-29 10:26:38 24 4
gpt4 key购买 nike

我正在使用 CLion 制作一个使用 MySQL 数据库来处理数据的 C++ 程序。我已经下载了 MySQL Connector 和 Boost 并将其链接到我的 cmake 文件。但是,当我尝试构建项目时,出现错误“未定义对‘_imp__get_driver_instance’的引用”。有人告诉我链接 MySQL 连接器库,但由于我对 C++ 和使用此连接器相当陌生,所以我不知道如何执行此操作。

目前,这是我的 Cmake 文件:

cmake_minimum_required(VERSION 3.8)
project(Learn_Cpp)


set(CMAKE_CXX_STANDARD 17)

include_directories("C:/mysql-connector-c++-noinstall-1.1.9-win32/include" "C:/mysql-connector-c++-noinstall-1.1.9-win32/include/cppconn" "C:/boost_1_66_0")

set(SOURCE_FILES "C++ Tutorials/ClassFile.cpp" "C++ Tutorials/ClassFile.h" "C++ Tutorials/Learn.cpp")
add_executable(Learn_Cpp ${SOURCE_FILES})

有人知道如何解决这个问题吗?

最佳答案

MySql 文档对此进行了广泛的描述 Visual StudioNetbeans 。您需要为 CMake 执行相应的操作。

快速而肮脏的方法是在 CMakeLists.txt 中硬编码库的路径:

target_link_libraries(Learn_Cpp c:/path/to/mysql/lib/mysqlcppconn.lib)

请注意,这将链接到连接器的 dll 版本,因此如果您想在构建后运行程序,则需要将 dll 放置在 exe 可以找到它的目录中。除此之外,这应该可以工作,但实际上只能在您的计算机上针对特定的构建配置工作。为了使其便携且更强大,您可以使用 find_library在磁盘上找到适合您的配置的正确库文件。同样,您可以使用 find_path找到包含目录而不是对它们进行硬编码并使用 find_packagelocate Boost .

在现代 CMake 中,将 MySql 的 find_pathfind_library 调用的结果包装在 imported target 中也被认为是一种很好的风格。 ,类似于 FindBoost 对 Boost 的作用。

关于c++ - 如何将 C++ MySQL 连接器库链接到 Cmake?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48165654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com