itk - 尝试制作 ITK 示例 Registration9.cxx 时出现链接器错误
问题描述
所以我正在尝试构建仿射注册过滤器,这是 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
解决方案
您的组件列表中可能缺少 ITKOptimizersv4 。
推荐阅读
- css - 为什么 grid-template-row 在这里没有做任何事情?
- hyperledger-fabric - Hyperledger 的 C# 实现
- php - Css 没有与 get_template_directory_uri() 一起排队
- node.js - node.js dotenv 加载不是一个函数
- javascript - Electron/JS 等到变量从不同的函数中获取数据
- azure-logic-apps - 我的逻辑应用每秒不断检查触发器
- selenium - Selenium Chromedriver 以数据打开:,在导航栏中
- android - 如何为不同的环境使用不同的 settings.gradle 文件
- protocol-buffers - 带有 oneof 或聚合的常见 proto3 字段
- drake - 如何使用 pydrake 更改从 urdf 文件加载的模型的浮动基本类型?