我有一个依赖于另一个库irRNG的库irWGN。
我的CMakeFiles.txt文件如下。一个是src/signals是
add_library(irRNG irRNG.cpp)
add_library(irWGN irWGN.cpp)
和主要的CMakeFile
include_directories(${SRC}/signals)
SET(MY_LIB
${MY_LIB}
irRNG
irWGN
)
....
foreach(file2link ${FILES_to_RUN})
target_link_libraries(${file2link}
${catkin_LIBRARIES}
${Boost_LIBRARIES}
${gsl_LIBRARIES}
${OpenCV_LIBRARIES}
${MY_LIB}
)
add_dependencies(${file2link} project_generate_messages_cpp)
endforeach(file2link)
正在收到此错误
./devel/lib/libirWGN.so: undefined reference to `irRNG::irRNG()'
../devel/lib/libirWGN.so: undefined reference to `irRNG::~irRNG()'
奇怪的是,我在ubuntu 12.04上使用了它,没有任何问题。只是现在这个问题出现了。
最佳答案
由于问题是您的irWGN取决于您的irRNG,因此解决问题的最简便方法是添加:
target_link_libraries(irWGN irRNG)
在库之间创建相互依赖性。它也适用于静态库!因此,如果您尝试将可执行文件链接到irWGN,则cmake还将自动以正确的顺序链接到irRNG。
关于c++ - 奇怪的错误: undefined reference to `class::class()' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37538967/