Windows与Linux下动态链接库的区别

编程知识 更新时间:2023-04-06 22:53:45

本文所述基于以下两点,

  1. 使用CMake进行项目的构建
  2. Windows下使用MinGW32 g++,Linux下使用GNU g++

一、Windows

Windows的动态链接库的命名格式为lib*.dll。

使用CMake创建动态链接库时,会生成两个文件,比如

下面代码是在CMakeLists.txt中描述的依赖关系,在cmake构建过程中,会在上下文规定的路径中寻找“libcurldll.a”、“libbase64.a”,即在前后分别自动添加上“lib”和“.a”。

libcurldll.a是用在项目构建过程中添加动态库依赖的,libcurl.dll是程序运行时加载的动态库,并且需要将libcurl.dll放到可执行文件同一目录下,才能正常加载。

target_link_libraries(
    MAIN 
    "curldll"
    "base64"
)

二、Linux

Linux的动态链接库的命名格式为lib*.so。

使用CMake创建动态链接库时,只会生成一个文件,比如

生成的libbase64.so可用于运行时加载。

在CMakeLists.txt中描述的依赖关系如下图。

在cmake构建过程中,会在上下文规定的路径中寻找“libbase64.so”,即在前后分别自动添加上“lib”和“.so”。

在CMakeLists.txt中规定的链接路径如下,程序会在以下路径中查找需要加载的动态库,不可移动至其他路径。

如果在上述路径中找不到动态库,会报错如下,

更多推荐

Windows与Linux下动态链接库的区别

本文发布于:2023-04-06 22:53:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/ed06c58bf37a388dc3c26b18e8b10456.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:动态链接库   区别   Windows   Linux

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 51234文章数
  • 14阅读数
  • 0评论数