Не могу использовать Ceres Solver, Glog
Я устанавливаю ceres в Ubuntu и использую всю командную строку в http://ceres-solver.org/installation.html Linux-части из sudo apt-get install libgoogle-glog-dev полностью, чтобы сделать установку Кажется, я установил решает и это зависимость без проблем. Но когда я пытаюсь запустить тестовый файл bin/simple_bundle_adjuster ../ceres-solver-1.12.0/data/problem-16-22106-pre.txt, он показывает, что не удается открыть файл../ceres-solver-1.9.0/data/problem-16-22106-pre.tx Затем я пытаюсь скомпилировать helloworld в учебной программе g++ -I/usr/include/eigen3 helloworld.cpp -o helloworld Это доставляет мне кучу проблем.
неопределенная ссылка на google::InitGoogleLogging(char const*)'
helloworld.cpp:(.text+0x104): undefined reference to
ceres::Problem::Problem()'
helloworld.cpp:(.text+0x155): неопределенная ссылка на `ceres::Problem::AddResidualBlock(ceres::CostFunction*, ceres::LossFunction*, double*)'
I не перечислил их всех. Но, похоже, он не может найти вещи о Google вообще. Надеюсь, вы можете помочь мне! это доставляет мне массу проблем.
1 ответ
Похоже, вы не ссылаетесь на библиотеку; это приведет к тому, что ссылки будут неопределенными. Если вы вызываете компоновщик (G++ может быть компоновщиком), то добавьте -lglog, добавьте конец, затем он должен связать его с glog.
Точно так же вы должны также связаться с ceres.
Вот фрагмент из того, что мне нужно связать, чтобы использовать библиотеку, которая использует Ceres. В CMake. Я предлагаю вам начать с конца / конца и добавить что-то в начало, чтобы исправить, вам может потребоваться префикс -l, чтобы указать, что вам нужно связать их. Я рекомендую использовать cmake, чтобы вы могли просто вставить этот список в target_link_libraries(мой исполняемый список здесь) и удалить ненужные / неиспользуемые библиотеки;
umfpack
cxsparse
stlplus
glog
gomp
ccolamd
btf
klu
cholmod
lapack
blas
camd
amd
pthread
ceres