You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将curl/curlpp链接到CMake项目?OBS插件链接curlpp报错解决

问题排查

你的配置存在两处核心遗漏:

  1. FindCurlpp.cmake未补充库文件查找逻辑:当前写的查找脚本只搜索了curlpp的头文件路径,完全没有查找libcurlpp库文件的逻辑,导致Curlpp_LIBRARIES变量全程为空,后续链接阶段无法识别到curlpp库。
  2. CMakeLists.txt未加入curlpp库的链接配置:即使正确拿到了curlpp的库路径,你也没有在链接列表中添加curlpp库,自然不会把curlpp的相关符号编译到插件的so文件中。

修复步骤

1. 修改external/FindCurlpp.cmake,补充库查找逻辑

修改后的完整文件如下:

find_path(Curlpp_INCLUDE_DIR
        NAMES
            "curlpp/cURLpp.hpp"
            "curlpp/Easy.hpp"
            "curlpp/Options.hpp"
            "curlpp/Exception.hpp"
        PATHS
            /usr/include /usr/share/include ~/Downloads/curlpp-0.8.1/include
        DOC "Curlpp include directory")

# 新增curlpp库文件查找逻辑
find_library(Curlpp_LIBRARY
        NAMES curlpp libcurlpp
        PATHS
            /usr/lib /usr/lib64 ~/Downloads/curlpp-0.8.1/build/lib
        DOC "Curlpp library path")

include(FindPackageHandleStandardArgs)
# 补充库文件为必填检查项
find_package_handle_standard_args(Curlpp DEFAULT_MSG Curlpp_INCLUDE_DIR Curlpp_LIBRARY)

if (Curlpp_FOUND)
    set(Curlpp_INCLUDE_DIRS ${Curlpp_INCLUDE_DIR} CACHE STRING "Curlpp include directories")
    # 赋值库列表变量供后续链接使用
    set(Curlpp_LIBRARIES ${Curlpp_LIBRARY} CACHE STRING "Curlpp libraries")
    get_filename_component(Curlpp_LIBRARY_DIR ${Curlpp_LIBRARY} DIRECTORY CACHE STRING "Curlpp library directory")
endif()

2. 修改CMakeLists.txt,添加curlpp链接配置

找到target_link_libraries配置块,新增curlpp库的链接项:

target_link_libraries(${CMAKE_PROJECT_NAME}
    ${LIBOBS_LIBRARIES}
    CURL::libcurl
    ${Curlpp_LIBRARIES} # 新增这一行
    ${Onnxruntime_LIBRARIES}
    ${OpenCV_LIBRARIES}
)

3. 重新编译验证

删除原有build目录,重新执行cmake配置、编译、安装流程即可。如果你的curlpp是自行编译没有安装到系统路径,cmake配置时可以添加-DCurlpp_ROOT=~/Downloads/curlpp-0.8.1参数指定curlpp的根路径,帮助查找脚本定位文件。

内容的提问来源于stack exchange,提问作者Maed Hamed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:36:04