C++ &*。所以";链接库可以';不要打开它';共享对象文件

C++ &*。所以";链接库可以';不要打开它';共享对象文件,c++,cmake,C++,Cmake,我正在使用一些库和CMake构建项目。 有两个项目;第一个是使用*.so”文件的库,第二个是基于第一个文件的库和可执行文件 但当我运行第二个项目的可执行文件时, 我得到以下错误: my_library: error while loading shared libraries: my_lib.so.0: cannot open shared object file: No such file or directory FirstProject的CMakeLists.txt: add_libra

我正在使用一些库和CMake构建项目。 有两个项目;第一个是使用*.so”文件的库,第二个是基于第一个文件的库和可执行文件

但当我运行第二个项目的可执行文件时, 我得到以下错误:

my_library: error while loading shared libraries: my_lib.so.0: cannot open shared object file: No such file or directory
FirstProject的CMakeLists.txt:

add_library(my_lib SHARED IMPORTED)
set_property(TARGET my_lib PROPERTY IMPORTED_LOCATION lib/my_lib/my_lib.so)

add_library(my_first_lib SHARED my_first_lib.cpp)
target_link_libraries(my_first_lib my_lib)
第二个项目的CMakeLists.txt:

add_library(my_second_lib my_second_lib.cpp)
target_link_libraries(my_second_lib ${my_first_lib_LIBRARIES})

add_executable(my_second_exe my_second_exe.cpp)
target_link_libraries(my_second_exe my_second_lib)

如何正确链接“*.so”文件?

它们是作为子项目一起构建的吗?如果不是,请尝试导出第一个项目使用的库路径:export LD\u library\u path=“path to the FOLDER CONTAIN your library“如果使用绝对路径而不是相对路径
lib/my_lib/my_lib.so
,那么它是否找到库?@UyTrieuViTran如果我添加该变量,“my_lib.so.0”将被检测到,但其他库将丢失。在我的例子中,我使用ROS lib,因此我得到以下错误“libroscpp.so:无法打开共享对象文件:没有这样的文件或目录”@Someprogrammerdude不幸的是,你的方法对我无效。@kyungpyokim在你的LD_LIBRARY_路径(假设你已导出LD_LIBRARY_路径)指向的文件夹中,尝试将所有依赖项放入该文件夹(例如libroscpp.so)。它们是否作为子项目一起构建?如果不是,请尝试导出第一个项目使用的库路径:export LD_library_path=“path TO the FOLDER CONTAIN your library”如果使用绝对路径而不是相对路径
lib/my_lib/my_lib.so
,则它会找到库吗?@UyTrieuViTran如果我添加该变量,则会检测到“my_lib.so.0”,但其他库会丢失。在我的例子中,我使用ROS lib,因此我得到以下错误“libroscpp.so:无法打开共享对象文件:没有这样的文件或目录”@Someprogrammerdude不幸的是,你的方法对我无效。@kyungpyokim在你的LD_LIBRARY_路径(假设你已导出LD_LIBRARY_路径)指向的文件夹中,尝试将所有依赖项放入该文件夹(例如libroscpp.so)。