C++ 匹配Eigen和Ceres Solver版本的最简单方法是什么?

C++ 匹配Eigen和Ceres Solver版本的最简单方法是什么?,c++,homebrew,eigen,ceres-solver,C++,Homebrew,Eigen,Ceres Solver,我使用brew安装了Eigen和Ceres Solver,作为现有项目的先决条件 当我为项目运行make时,我得到以下消息 找到了Eigen依赖项,但找到的Eigen版本(3.3.1)没有 与编译的Eigen Ceres版本不完全匹配 (3.3.0). 这会触发违反 一个定义规则。参见维基百科的文章 欲知详情 我的第一个想法是使用brew的Eigen从源代码处编译Ceres解算器,但这会在生成过程中产生其他错误消息 具体来说,它最多可生成54%,然后打印 [ 54%] Linking C exe

我使用brew安装了Eigen和Ceres Solver,作为现有项目的先决条件

当我为项目运行make时,我得到以下消息

找到了Eigen依赖项,但找到的Eigen版本(3.3.1)没有 与编译的Eigen Ceres版本不完全匹配 (3.3.0). 这会触发违反 一个定义规则。参见维基百科的文章 欲知详情

我的第一个想法是使用brew的Eigen从源代码处编译Ceres解算器,但这会在生成过程中产生其他错误消息

具体来说,它最多可生成54%,然后打印

[ 54%] Linking C executable ../bin/curve_fitting_c
Undefined symbols for architecture x86_64:
  "___kmpc_atomic_fixed4_sub", referenced from:
      __ZN5Eigen8internal29general_matrix_matrix_productIldLi1ELb0EdLi1ELb0ELi0EE3runElllPKdlS4_lPdldRNS0_15level3_blockingIddEEPNS0_16GemmParallelInfoIlEE in libceres.a(gradient_checker.cc.o)
      __ZN5Eigen8internal29general_matrix_matrix_productIldLi1ELb0EdLi0ELb0ELi0EE3runElllPKdlS4_lPdldRNS0_15level3_blockingIddEEPNS0_16GemmParallelInfoIlEE in libceres.a(dogleg_strategy.cc.o)

__ZN5ceres8internal11EventLoggerC2ERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE in libceres.a(wall_time.cc.o)
  __ZN5ceres8internal11EventLoggerC1ERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE in libceres.a(wall_time.cc.o)
  __ZN5ceres8internal11EventLoggerD2Ev in libceres.a(wall_time.cc.o)
。。。跳过一些行

    __ZN5ceres8internal11EventLogger8AddEventERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE in libceres.a(wall_time.cc.o)
ld: symbol(s) not found for architecture x86_64
clang-3.5: error: linker command failed with exit code 1 (use -v to see invocation)
推荐的特征值为3.2.2或更高版本,因此3.3.1应该可以,除非3.2和3.3之间有一些结构变化

我的问题:


下一步我应该尝试什么?安装一个旧版本的Eigen?

我正试图使用从源代码构建ceres。我仍然不知道为什么会失败,但使用brew(我以前不知道存在的一个选项)从源代码构建是可行的

brew安装--从源ceres solver构建


它使用通过brew(Egeng 3.3.1)安装的Egeng依赖项,并且不会产生任何错误消息。

好的,您会得到一个明确的警告。你希望我们告诉你什么?“不,那个软件的开发人员根本不知道他们的软件是如何工作的?”好吧,说得好。我以为第一个问题的答案是否定的,但我有点困惑下一步该怎么做。