неопределенная ссылка на ошибку qpOASES при использовании динамической библиотеки qpOASES и CMakeList.txt - PullRequest
1 голос
/ 10 апреля 2019

Я создаю пакет в ROS2.Ошибка undefined reference to произошла, когда я хочу включить динамическую библиотеку qpOASES в файл заголовка.

qpOASES установлен в ~.Я пытался find_package(qpOASES REQUIRED).Но я получил ошибку

By not providing "FindqpOASES.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "qpOASES", but CMake did not find one.

В заголовочном файле я использую #include <qpOASES.hpp>.В файле CMakeList.txt я использую target_link_libraries(my_node Eigen3::Eigen ~/qpOASES-3.2.1/bin/libqpOASES.so).Но когда я его скомпилировал, появилась следующая ошибка.

ltv_mpc_controller.cpp:(.text+0x4a07): undefined reference to `qpOASES::SQProblem::SQProblem(int, int, qpOASES::HessianType, qpOASES::BooleanType)'
ltv_mpc_controller.cpp:(.text+0x4a7b): undefined reference to `qpOASES::QProblem::init(double const*, double const*, double const*, double const*, double const*, double const*, double const*, int&, double*, double const*, double const*, qpOASES::Bounds const*, qpOASES::Constraints const*, double const*)'
ltv_mpc_controller.cpp:(.text+0x4aeb): undefined reference to `qpOASES::SQProblem::hotstart(double const*, double const*, double const*, double const*, double const*, double const*, double const*, int&, double*, qpOASES::Bounds const*, qpOASES::Constraints const*)'

Кто-нибудь знает, как исправить эту ошибку?

1 Ответ

0 голосов
/ 10 июля 2019

В make-файле Linux make_linux.mk в строке 110 есть

CPPFLAGS = -Wall -pedantic -Wshadow -Wfloat-equal -O3 -Wconversion -Wsign-conversion -fPIC -DLINUX -D__USE_LONG_INTEGERS__ -D__USE_LONG_FINTS__

Попробуйте удалить флаги -D__USE_LONG_INTEGERS__ -D__USE_LONG_FINTS__

Это исправило это для меня.

...