我使用clion来制作一个c程序,它使用mysql数据库来处理数据。我已经下载了mysql连接器和boost,并将其链接到我的cmake文件。然而,当我试图构建我的项目时,出现了一个错误:“未定义对`\u imp\u get\u driver\u 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})
有人知道我如何解决这个问题吗?
1条答案
按热度按时间bwitn5fc1#
mysql文档为visualstudio和netbeans详细描述了这一点。你需要为cmake做相应的事情。
快速而肮脏的方法是只硬编码到您数据库中的库的路径
CMakeLists.txt
:请注意,这将针对连接器的dll版本进行链接,因此如果要在生成后运行程序,则需要将dll放置在exe可以找到它的目录中。除此之外,这应该可以工作,但实际上只适用于特定构建配置的计算机。为了使它更具可移植性和健壮性,您可以使用
find_library
为磁盘上的配置找到正确的库文件。同样,您可以使用find_path
定位include目录而不是硬编码它们并使用find_package
找到增压器。在现代的cmake中,将结果 Package 起来也是一种很好的风格
find_path
以及find_library
在导入的目标中调用mysql,类似于FindBoost
做这件事是为了提高效率。