cmake自建共享库中的Undefined Reference

Undefined Reference in self-built shared library with cmake

我目前正在尝试使用自建的共享库。 FooBar 库利用“Foo”库进行一些昂贵的计算。然而,“Foo”需要许可库“Bar”。使用如下CMakeLists.txt:

时已经交叉编译成功
cmake_minimum_required(VERSION 3.12)

project(FooBar LANGUAGES CXX)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)

find_library(Curl
    NAMES curl)

find_library(Foo
    NAMES foo)

find_library(Bar
    NAMES bar)


file(GLOB OBJECT_FILES CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/src/resources/*.o)
file(GLOB SOURCE_FILES CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/src/*.cpp)

add_library(FooBar SHARED ${SOURCE_FILES} ${OBJECT_FILES})
target_link_libraries(FooBar PRIVATE Threads::Threads)
target_link_libraries(FooBar PRIVATE -L${Foo} -L${Bar} -L${Curl})

编译成功,没有任何错误,但是当我想将它包含在可执行文件中时,“FooBar”确实给了我一个未定义的引用,指向许可库“Bar”中的一个函数。我已经检查了“Bar”-library,它包含使用的功能!

CMakeLists.txt 可执行文件:

cmake_minimum_required(VERSION 3.12)
project(FooBarExe)

add_subdirectory(FooBar)

add_executable(FooBarExe ${FooBarExe_SRC} ${FooBarExe_INC}) # FooBarExe is just the placeholder for its original name!
target_link_libraries(FooBarExe PRIVATE FooBar)

错误信息:

"FooBarExe/FooBar/FooBar.so: undefined reference to 'function' 
 collect2: error: ld returned 1 exit status" 

有没有人有解决这个问题的其他想法?我已经对 target_link_libraries 中的库进行了重新排序,将其编译为静态库,通过 set_target_properties 和 INTERFACE_LINK_LIBRARIES 将两个库包含并链接到 FooBarExe,但没有任何成功...

编辑: 我尝试了以下建议的解决方案:

我没有注意到“栏”库中的界面发生了变化。不得不更换头文件和库。使用 nm -gDC xxxx.so 命令深入查看库,发现更改。

谢谢大家的帮助,错误是我造成的...