Не могу использовать 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 toceres::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
Другие вопросы по тегам