加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 在CMake中包含共享库(.so)

发布时间:2020-12-16 07:05:44 所属栏目:百科 来源:网络整理
导读:我一直试图用CMake包含不同类型的库. .a .dylib .so 我终于得到了.a和.dylib来处理这段代码. find_library(libname NAMES libcef.dylib PATHS ${libname_PATH}) 与此一起,在我的add_executable下面初始化我的所有文件的构建. target_link_libraries(${PROJEC
我一直试图用CMake包含不同类型的库.

> .a
> .dylib
> .so

我终于得到了.a和.dylib来处理这段代码.

find_library(libname NAMES  libcef.dylib PATHS ${libname_PATH})

与此一起,在我的add_executable下面初始化我的所有文件的构建.

target_link_libraries(${PROJECT_NAME} ${libname})

但是,我尝试在.so文件上使用相同的代码,但它似乎不起作用.

当我尝试构建时,我从cmake得到这个声明.

Target "project name" links to item

-- path of file -- 

which is a full-path but not a valid library file name.

我不确定这是否是处理.so文件的正确方法,或者我甚至不完全理解.so文件是什么.任何意见和/或澄清将非常感激.

编辑:

理论 – 我的理论是因为它在库名称前面没有lib,它叫做ffmpegsumo.so.但是,当我尝试重命名它时,文件名仍然保存到变量名称中非常奇怪.

解决方法

同样适用于.so文件,只需确保您提供的${libname_PATH}中存在所需的.so文件.

find_library以相同的方式处理所有类型(.a / .so / .dylib / .dll).问题可能如下

– 路径设置不正确
– 因绝对路径而出错
– .不存在
– 如果错误来自构建(而不是仅来自配置).so可能已损坏,请尝试替换它

– 你的图书馆似乎没有效果

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读