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

我有一个依赖于另一个库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# - 编译错误-您是否缺少using指令或程序集引用?

java - 实际参数和形式参数列表的长度不同(但两个长度均为2?)

c++ - 代码块错误

java - Java Swing GUI错误

c++ - 我的编译方式错误吗?

java - 变量名称不能在Eclipse中解析为变量错误(多重继承)

c++ - C++构建错误: class does not name a type

java - 编译错误: Can not convert boolean into an int

c++ - 具有来自不同 header 的模板类的类将无法编译

java - BufferedReader错误