项目场景:
windows平台、vscode、cmake
分享在学习cmake时碰见的问题,windows系统
问题描述
在使用cmake时,使用静态库,全程无障碍,但是改成SHARED就会出下如下错误
LNK1104: 无法打开文件“*.lib” [.vcxproj]
cmake代码如下:
#main/CMakeLists.txt
#最小版本
cmake_minimum_required(VERSION 3.10)
#项目信息
project(Main)
#添加动态库
add_library(Account SHARED "../dir/Account.h" "../dir/Account.cpp")
#生成可执行文件
add_executable(Main main.cpp)
#为目标添加头目录
target_include_directories(Main PUBLIC "../dir")
#为目标添加库文件
target_link_libraries(Main PRIVATE Account)
原因分析:
简单来讲是由于缺失了导入库(.lib),这里的.lib文件并不是静态库,在windows平台上使用动态库需要导入库的辅助,而我的cmake默认是不生成导入库的
解决方案:
知道问题了解决方案就很简单!
让cmake生成导入库就好
加入如下:
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)//开启导入库生成功能