我正在使用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})
有谁知道如何解决此问题?
答案 0 :(得分:0)
MySql文档对Visual Studio和Netbeans进行了广泛的描述。你需要为CMake做相应的事情。
快速而肮脏的方法是在CMakeLists.txt
中硬编码库的路径:
target_link_libraries(Learn_Cpp c:/path/to/mysql/lib/mysqlcppconn.lib)
请注意,这将链接到连接器的dll版本,因此如果要在构建后运行程序,则需要将dll放在exe可以找到它的目录中。除此之外,这应该可行,但实际上只适用于您的机器上的特定构建配置。为了使其可移植且更健壮,您可以使用find_library
为磁盘上的配置找到正确的库文件。同样,您可以使用find_path
找到包含目录,而不是对其进行硬编码,并使用find_package
到locate Boost。
在现代CMake中,将find_path
和find_library
MySql调用的结果包装在imported target中也是一种很好的风格,类似于FindBoost
的方式它为Boost。