Clion使用踩坑(调用外部DLL配置)

如果你调用第三方dll,一切都按照网上配置,结果build报错 undefined reference to xxx

那么恭喜你,看到这篇文章

  • 一种是你target_link_libraries没有配置三方库,
  • 第二种是你配对了,但是ToolChians配的不和三方库一直(Window还是linux,x86还是x64,MinGw还是Visual Studio)

解决方法:修改MinGW改为Visual Studio,然后把CMakeLists.txt里面的target_link_libraries中链接的dll文件名改成lib的文件名

使用MinGW调用dll

target_link_libraries(项目名 xxx.dll)

使用Visual Studio调用lib

target_link_libraries(项目名 xxx.lib)

常见问题 ld.exe: cannot find -lxxxx

检测配置的dll或lib名字有没有错误,有没有添加

link_directories(lib)

MinGW调用msvc(VS之类的)生成的dll也会报这个错!!!

如果报错要process launch failed: unknown error

debug启动加上lib目录的环境变量

 如果使用utf-8运行报错 什么Unicode之类的,添加

add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")

Error LNK2001 无法解析的外部符号

aux_source_directory(. SRC_LIST) # 搜索当前目录下的所有.cpp文件

add_executable(项目名 ${SRC_LIST})

项目中使用相对路径读写文件,要配置项目路径,不然读取的是cmake-build-debug路径下面


网上几乎99.99%都说了,常规的使用方法

详细说明(常规的安装配置,网上能搜到的,这里都不做说明)

使用c/c++打包的库分为linux和windows

这里只说windows

静态库(lib)和动态库(dll)

动态库一般会有(.h .lib .dll)这三个文件,如果你是用Visual Studio生成的共享库,那就要修改ToolChians,修改为Visual Studio

toolchain(大多数推荐的是MinGW,这个没错,但是你要你知道你的dll使用什么生成的,不知道就切换下试试)

 引用的配置CMakeLists.txt

cmake_minimum_required(VERSION 3.19)
project(callDll)

set(CMAKE_CXX_STANDARD 11)

link_directories(lib)
include_directories(include)

add_executable(callDll main.cpp)

target_link_libraries(callDll md.lib)

目录结构

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值