【发布时间】:2017-07-14 17:46:52
【问题描述】:
我正在从我的 CMakeLists.txt 文件中的源文件指定一个共享库构建,如下所示:
# Library setup
file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Source/*.cpp)
file(GLOB_RECURSE HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/Source/*.h)
在源目录中包含构建共享库所需的所有 .h 和 .cpp 文件。所以我然后做这样的事情:
add_library(mylibrary SHARED ${SOURCES} ${HEADERS} )
我稍后也会将一堆其他 .lib 与 mylibrary 链接(会不会有冲突的问题?)。当我尝试构建 mylibrary 时出现问题。我收到链接错误,例如:
Severity Code Description Project File Line Suppression State
Error LNK2001 unresolved external symbol __imp_cosf mylibrary ***.obj 1
即使符号是在我包含的源文件中定义的。我不确定该怎么做才能正确地让我的项目找到这些符号。有趣的是,当我构建为静态库时它很好。但是,当我尝试构建为动态库时,会出现这些错误。
【问题讨论】:
-
如果你能提供一个最小的例子来重现这个错误,最好的办法就是。如果您可以向我们展示来自“输出窗口”的消息,而不仅仅是形成“错误窗口”,这也会有所帮助 - 我猜您正在使用 VS