CLion和动态链接库
生成链接库
- 创建一个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
CLion和动态链接库的更多相关文章
- CLion之C++框架篇-安装工具,基础框架的搭建(一)
背景 日常学习C++,也就是看看书.在vim里写写代码.在日常项目开发中,也是边看书(一是系统性理解.二是找找有什么更好的代码编写方式)边写代码,会顺带看看别人的代码怎么写的? 日常学 ...
- 文本分类学习 (十)构造机器学习Libsvm 的C# wrapper(调用c/c++动态链接库)
前言: 对于SVM的了解,看前辈写的博客加上读论文对于SVM的皮毛知识总算有点了解,比如线性分类器,和求凸二次规划中用到的高等数学知识.然而SVM最核心的地方应该在于核函数和求关于α函数的极值的方法: ...
- 用CLion实现本地方法并给java调用
众所周知,PHP是世界上最好的语言,java排第二,因为PHP无所不能.但是在某些场景下java还要调用本地方法来提高执行的效率,故java只能排第二.java提供了jni(Java Native I ...
- 【腾讯Bugly干货分享】动态链接库加载原理及HotFix方案介绍
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57bec216d81f2415515d3e9c 作者:陈昱全 引言 随着项目中动 ...
- MacOS平台下@rpath在动态链接库中的应用
一.背景介绍 公司开发的一个底层库被用在了Mac平台的多个产品中.在开发这个底层库的初期,对于Mac OSX下的Install name 并没有过多的了解.对于XCode中的install name项 ...
- 关于 .NET Core 动态链接库的开发
上个月月底,VS2017RC版发布了,一个很大的特点就是将原来的xProj文件又改回了csproj了. 这样一改,其实很多新的问题也暴露出来了,最严重的问题就是Net版本兼容性. 原来的Net体系大致 ...
- Andriod学习笔记3:Mac 平台下搭建 CLion 集成开发环境
1. 安装Xcode 通过App store或者下载安装Xcode. 安装完成之后,最好启动一下Xcode,否则可能会报"Error:The C compiler "/usr/bi ...
- vc下的静态链接库与动态链接库(一)
一.静态库与动态库的区别 目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Lib ...
- 编译可供C#调用的C/C++动态链接库dll文件
编译可供C#调用的C/C++动态链接库dll文件,C语言控制台应用程序,探索生成dll过程 由于项目需求,需要公司另一个团队提供相关算法支持,是用C语言编译好的dll库提供给我们进行调用. 但是拿到d ...
- Clion 跨平台的C++ IDE
CLion 是 JetBrains 推出的全新的 C/C++ 跨平台集成开发环境. 正式版本已经发出,目前是1.0.1 http://www.jetbrains.com/clion/ http://b ...
随机推荐
- 微信小程序-云函数、云存储
云函数是运行在服务器端的 创建一个目录cloud project.config.json配置云函数目录 cloud目录有个云朵.代表云函数 初始化成功了 新建一个云函数 cloud目录右击 新建一个N ...
- thinkphp5.1打印SQL语句
最近在写tp框架搭建的小玩具,有时候我们需要查看SQL语句.所以就诞生了这篇随笔,命令如下: $xxx=db('xxx')->where('x',xx)->select(); $sql=D ...
- 谈谈对K8S CNI、CRI和CSI插件的理解
- 回滚Deployment控制器下的应⽤发布
若因各种原因导致滚动更新⽆法正常进⾏,如镜像⽂件获取失败."⾦丝雀"遇险等,则应该将应⽤回滚到之前的版本,或者回滚到由⽤户指定的历史记录中的版本. Deployment控制器的回滚 ...
- kibana安装安装插件
命令语法:bin/kibana-plugin install <package name or URL> 当您指定的插件名没有带 URL,插件工具将会尝试去下载 Elastic 官方插件. ...
- docker还原挂载在宿主机的mysql数据
ps:有个项目的数据库之前是docker的mysql镜像,数据都去mysql的镜像里面拿数据,但是目前镜像里面的数据库是空的,所以现在来说明一下如何恢复数据 1.创建数据卷 docker volume ...
- NOI2014 洛谷P2114 起床困难综合征(位运算)
呃...这道题算是noi中比较简单的题吧...... 众所周知,位运算是个好东西,它就是对应的位进行运算,跟其他的位没有关系. 我们要选取一个m值使最后的攻击力最大,对于这个m,从高位开始枚举,判断该 ...
- Tableau Server注册安装及配置详细教程
Tableau Server注册安装及配置详细教程 本文讲解的是 Tableau Server 10.0 版本的安装及配置 这里分享的 TableauServer 安装版本为64位的10.0版本Ser ...
- 跨平台客户端Blazor方案尝试
一.方案选择 Electron/MAUI + Blazor(AntDesgin blazor) BlazorApp:Blazor Razor页面层,抽象独立层,被BlazorAppElectron/B ...
- 生产系统CPU飙高问题排查
现状 生产系统CPU占用过高,并且进行了报警 排查方法 执行top命令,查看是那个进程导致的,可以确定是pid为22168的java应用导致的 执行top -Hp命令,查看这个进程的那个线程导致cpu ...