CLion和动态链接库
2024-09-08 17:18:50
生成链接库
- 创建一个library项目
- 在项目中写好自己的代码
- cmakelist
cmake_minimum_required(VERSION 3.21)
project(SharedTest)
set(CMAKE_CXX_STANDARD 17)
add_library(SharedTest SHARED library.cpp)
- CTRL+F9生成链接库
debug或者release目录下会有一个dll文件,取决于你选择的模式
链接库的使用
创建一个普通的可执行项目
原始的cmakelist
应该是类似于下面这种
cmake_minimum_required(VERSION 3.21)
project(SocketTest)
set(CMAKE_CXX_STANDARD 17)
add_executable(SocketTestClient client.cpp)
连接dll
文件
cmake_minimum_required(VERSION 3.21)
project(SocketTest)
set(CMAKE_CXX_STANDARD 17)
#头文件目录
include_directories(D:/MyProject/C++/SharedTest/src/Heaser)
#dll库文件目录
link_directories(D:/MyProject/C++/SharedTest/cmake-build-release)
#main函数所在文件和当前项目所需的自己编写的源文件
add_executable(SocketTestClient client.cpp)
#连接链接库
target_link_libraries(SocketTestClient D:/MyProject/C++/SharedTest/cmake-build-release/libSharedTest.dll)
通俗的来讲,dll
文件只是函数的实现体,所有在使用的时候,任然需要引入定义文件.h
头文件,所以需要加入头文件目录,让程序找得到定义文件,或者自己写相关函数的声名也可以
在执行之前,还需要设置环境变量,因为动态链接库可能不是在当前项目下的
PATH就是dll
文件所在目录
然后,项目就可以运行了
注:
# 生成一个静态库,会生成一个libhello.a文件
add_library( hello libHelloSLAM.cpp )
# 生成一个共享库,会生成一个libhello_shared.so文件
add_library( hello_shared SHARED libHelloSLAM.cpp )
# 生成可执行文件useHello
add_executable( useHello useHello.cpp )
# 将可执行程序链接到上库文件
target_link_libraries( useHello hello_shared )
————————————————
版权声明:本文为CSDN博主「robinhjwy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/robinhjwy/article/details/78856454
G++命令
g++ -fPIC -shared lib.cpp -o libLib.so --std=c++17
最新文章
- dmidecode常用参数
- PHP取整函数:ceil,floor,round,intval的区别详细解析
- guzzle调用失败-缺少guzzle
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十三):地图相关接口说明
- jquery实现全选功能
- nginx不支持pathinfo 导致thinkphp出错解决办法
- jquery 事件绑定以及解绑定
- 如何优雅地运用 Chrome (Google)
- Java MultipartFile 使用记录
- iOS:定制自适应大小的透明吐司弹框
- poj3126 Prime Path(c语言)
- rancher 2 webhook 格式
- Numpy - Pandas - Matplot 功能与函数名 速查
- C语言 · 色盲的民主
- python复制文件,路径不存在问题(Windows和linux路径分隔符不统一)
- LeetCode题解之Intersection of Two Linked Lists
- CSS控制滚动条的样式
- ASP.NET CORE MVC 2.0 发布到IIS 配置问题
- POJ - 2528 奇怪的测试数据
- urllib -- ProxyHandler处理器(代理设置)
热门文章
- shell分割字符串并赋值给变量
- traefik的80和443端口占用进一步分析
- SQL通用语法和SQL分类
- P3998 [SHOI2013]发微博 方法记录
- DDD-领域驱动(二)-贫血模型与充血模型
- 解决console控制台反复打印“WebSocket connection to ws://localhost:9528/sockjs-node/107/uadaszgz.websocket failed:Invalid frame header
- Vue学习之--------监视属性(2022/7/10)
- 怎样在vue中隐藏el-form-item中的值、设置输入框的值是只读
- .Net Core redis 调用报错 '6000 Redis requests per hour' 解决 6000 此调用限制
- VS2022连接Oracle数据库所需包和连接字符串