CMake链接到导入库
我需要将我的项目链接到libmysql.dll动态库(我需要这样做,因为我正在将我的项目构建为/MDd,参考:) 现在棘手的是,它是一个导入库(参考:),因此也有一个libmysql.lib 我正在使用CMake进行构建:CMake链接到导入库,cmake,libmysql,import-libraries,Cmake,Libmysql,Import Libraries,我需要将我的项目链接到libmysql.dll动态库(我需要这样做,因为我正在将我的项目构建为/MDd,参考:) 现在棘手的是,它是一个导入库(参考:),因此也有一个libmysql.lib 我正在使用CMake进行构建: set(MYSQL_DIR "C:/Program Files/MySQL/MySQL Connector C 6.1" CACHE PATH "The path to the MySQL C API library") include_directories(${M
set(MYSQL_DIR "C:/Program Files/MySQL/MySQL Connector C 6.1"
CACHE PATH "The path to the MySQL C API library")
include_directories(${MYSQL_DIR}/include)
find_library(mysql NAMES libmysql PATHS ${MYSQL_DIR}/lib)
message(STATUS "mysql library: " ${mysql})
CMake找到库libmysql.lib,但当我尝试编译时,我得到以下链接器错误:
LINK : fatal error LNK1104: cannot open file 'mysql.lib'
mysql如上所述,是包含libmysql.lib路径的CMake变量的名称
我曾尝试直接链接到.dll,但也不起作用,CMake找不到.dll
问题:
我应该如何在CMake中继续链接到导入库?谢谢你的帮助 您需要使用
find_library()
调用target_link_libraries()
的结果。在您的例子中,它是target\u link\u libraries(main${mysql})
您的target\u link\u libraries()
调用看起来像什么?target\u link\u libraries(main mysql)
,main只是一个来自单个文件main.cpp的可执行文件。谢谢@arrowd它现在编译了,但是当启动程序时,我收到一个错误,告诉我我的电脑中缺少libmysql.dll。我想我应该让CMake知道在哪里也可以找到.dll。你需要将它放在你的.exe文件中。有没有其他方法指定在哪里查找dll?理想情况下,CMake?是OS loader查找库。对于Windows,规则是:查找.exe目录、查找工作目录、查找Windows\System32目录。谢谢@arrowd。我找到了另一种方法,即设置path环境变量,如本答案中所述