尝试使用ITK示例Registration9.cxx时出现链接器错误

时间:2018-05-24 17:58:09

标签: itk

所以我正在尝试构建Affine Registration Filter,这是ITK提供的一个例子。

文件构建,但是我收到一个链接器错误,它说渐变步骤优化器引用了一个未定义的基本模板。我检查了相应的ITK目录,基础模板文件就在那里。此外,当使用原始渐变步骤优化器(而不是v4)时,文件将链接。库中存在错误(可能不太可能)或者我的系统上的某些内容正在丢失链接。

目前使用cmake 3.11,Slicer 4和ITK 4.13。我通过向导创建了一个新的Slicer扩展,并在其中添加了一个cli模块作为测试平台,如果有人想尝试再次准确地重现错误。

 Linking CXX shared library ../lib/Slicer-4.8/cli/modules/libImageRegistration9Lib.dylib
Undefined symbols for architecture x86_64:
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::SetWeights(itk::OptimizerParameters<double>)", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::StartOptimization(bool)", referenced from:
      itk::GradientDescentOptimizerBasev4Template<double>::StartOptimization(bool) in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::DoEstimateScalesOn()", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::SetNumberOfThreads(unsigned int)", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::SetScalesEstimator(itk::OptimizerParameterScalesEstimatorTemplate<double>*)", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::DoEstimateScalesOff()", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::GetModifiableMetric()", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::SetDoEstimateScales(bool)", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::GetMetric()", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::SetMetric(itk::ObjectToObjectMetricBaseTemplate<double>*)", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::SetScales(itk::OptimizerParameters<double> const&)", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::ObjectToObjectOptimizerBaseTemplate()", referenced from:
      itk::GradientDescentOptimizerBasev4Template<double>::GradientDescentOptimizerBasev4Template() in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::~ObjectToObjectOptimizerBaseTemplate()", referenced from:
      itk::GradientDescentOptimizerBasev4Template<double>::GradientDescentOptimizerBasev4Template() in ImageRegistration9.cxx.o
      itk::GradientDescentOptimizerBasev4Template<double>::~GradientDescentOptimizerBasev4Template() in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::GetWeights() const", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::GetCurrentPosition() const", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::GetNumberOfThreads() const", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::GetDoEstimateScales() const", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::GetScalesAreIdentity() const", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::GetCurrentMetricValue() const", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::GetWeightsAreIdentity() const", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::GetValue() const", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::GetMetric() const", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::GetScales() const", referenced from:
      vtable for itk::RegularStepGradientDescentOptimizerv4<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerv4Template<double> in ImageRegistration9.cxx.o
      vtable for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
  "itk::ObjectToObjectOptimizerBaseTemplate<double>::PrintSelf(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, itk::Indent) const", referenced from:
      itk::GradientDescentOptimizerBasev4Template<double>::PrintSelf(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, itk::Indent) const in ImageRegistration9.cxx.o
  "typeinfo for itk::ObjectToObjectOptimizerBaseTemplate<double>", referenced from:
      typeinfo for itk::GradientDescentOptimizerBasev4Template<double> in ImageRegistration9.cxx.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [lib/Slicer-4.8/cli-modules/libImageRegistration9Lib.dylib] Error 1
make[1]: *** [ImageRegistration9/CMakeFiles/ImageRegistration9Lib.dir/all] Error 2

1 个答案:

答案 0 :(得分:1)

您可能在list of components中缺少ITKOptimizersv4。

相关问题