我无法在我的 C++ 项目中包含 .so 文件

问题描述 投票:0回答:1

我正在尝试将 libcurl 包含在我的大型 C++ 项目中,该项目是我使用 Visual Studio Code、CMake 和 gcc 在 Ubuntu 24.04 上构建的。

我单独下载并构建了 libcurl,并将 libcurl 文件夹以及构建的 liburl.so (以及 so.4 和 so.4.8.0 文件)放置在我的项目 dir/Engine/lib/curl 中。

我已将其添加到 gcc 命令中:

-L/home/ian/dev/hedgey/Engine/lib/curl/ -llibcurl

但我收到此错误:

[build] /usr/bin/ld.gold: error: cannot find -llibcurl

为了检查我的拼写,ls 在该目录上的输出:

ls /home/ian/dev/hedgey/Engine/lib/curl/libcurl*
/home/ian/dev/hedgey/Engine/lib/curl/libcurl.pc
/home/ian/dev/hedgey/Engine/lib/curl/libcurl.pc.in
/home/ian/dev/hedgey/Engine/lib/curl/libcurl.so
/home/ian/dev/hedgey/Engine/lib/curl/libcurl.so.4
/home/ian/dev/hedgey/Engine/lib/curl/libcurl.so.4.8.0

我做错了什么?

编辑

由于评论,我尝试使用更“cmakonic”的方法包含 libcurl:

add_subdirectory( ${libDir}/curl ${CMAKE_CURRENT_BINARY_DIR}/curl)
target_link_libraries(${TORQUE_APP_NAME} curl)
addInclude(${libDir}/curl/src)

我收到以下错误:

CMake 错误位于 Tools/CMake/torque3d.cmake:606 (target_link_libraries): EXECUTABLE 类型的目标“curl”不能链接到另一个目标。 可以仅链接到 INTERFACE、OBJECT、STATIC 或 SHARED 库,或者链接到 设置了 ENABLE_EXPORTS 属性的可执行文件。

编辑

我已将 target_link_libraries 替换为:

target_link_libraries(${TORQUE_APP_NAME} libcurl)

我现在得到了一个相当难以理解的错误:

[cmake] CMake Error:
[cmake]   Running
[cmake] 
[cmake]    '/usr/bin/ninja' '-C' '/home/ian/dev/hedgey/build' '-t' 'recompact'
[cmake] 
[cmake]   failed with:
[cmake] 
[cmake]    ninja: error: build.ninja:25157: multiple rules generate /home/ian/dev/hedgey/My Projects/hedge/game/resolve
c++ gcc
1个回答
0
投票

如果这个问题被删除,我不会感到惊讶,但如果没有(感谢所有评论者),我修复了这个问题。

我将其添加到根 CMakeLists.txt 中:

add_subdirectory(Engine/lib/curl)

然后将其添加到我的 .cmake 文件中:

target_link_libraries(${TORQUE_APP_NAME} CURL::libcurl)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.