CLion和动态链接库

生成链接库

  1. 创建一个library项目
    在这里插入图片描述
  2. 在项目中写好自己的代码
    在这里插入图片描述
  3. cmakelist
cmake_minimum_required(VERSION 3.21)
project(SharedTest)
set(CMAKE_CXX_STANDARD 17)

add_library(SharedTest SHARED library.cpp)
  1. 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
posted @ 2022-10-24 19:28  DaoDao777999  阅读(434)  评论(0)    收藏  举报