c++ - 奇怪的错误: undefined reference to `class::class()'

标签 c++ compiler-errors linker cmake undefined

我有一个依赖于另一个库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/

相关文章:

c++ - 从字符串转换为double和int-C++

c++ - QGraphicsScene 背景画笔偏移?

c++ - OpenGL32.lib 链接不正确

c++ - 打开对话框

ios - Swift:对 NSNotFound 的模糊引用

dll - 链接到 V8 快照

scala - Scala运算符#>导致编译错误,但不会导致编译错误->为什么?

android - javax.crypto.IllegalBlockSizeException : last block incomplete in decryption

C++ 字符串覆盖链接错误

c++ - 对用户定义函数的 undefined reference