redis — ошибка ссылки на библиотеку Catkin / ROS C ++ (неопределенная ссылка)

Я пытаюсь использовать CPP Redis библиотека в моем проекте ROS. Кажется, не удается правильно связать с cpp-redis в следующем коде:

#include "ros/ros.h"#include "std_msgs/String.h"#include "communication.h"#include "ros/ros.h"
int main (int argc, char **argv)
{
// Initialize and get a handle
ros::init(argc, argv, "team3");
ros::NodeHandle n;

//directly from the example
cpp_redis::redis_client client;
client.connect("127.0.0.1", 6379, [](cpp_redis::redis_client&) {
std::cout << "client disconnected (disconnection handler)" << std::endl;
});

}

Со следующей ошибкой:

/home/wouter/Documents/Team3_Visitor_Goal/ros/src/team3/src/publisher.cpp:17: undefined reference to `cpp_redis::redis_client::connect(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, std::function<void (cpp_redis::redis_client&)> const&)'

Мой CMakeLists.txt выглядит следующим образом:

cmake_minimum_required(VERSION 2.8.3)
project(team3)

set(CMAKE_CXX_COMPILER "clang++")
set(CMAKE_C_COMPILER "clang")
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_STANDARD 11) #set correct version

## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS
naoqi_driver
roscpp
std_msgs
)

## Declare a catkin package
catkin_package()

## Build talker and listener
include_directories(include ${catkin_INCLUDE_DIRS})

add_executable(pepper src/publisher.cpp)
target_link_libraries(pepper ${catkin_LIBRARIES} cpp_redis tacopie)

Я использую компилятор CLang в сочетании с системой сборки ROS который называется сережкой.

Итак, есть несколько странных вещей:

  • Похоже, что это правильно связано, потому что если я удаляю cpp_redis а также tacopie из target_link_libraries я получаю намного больше неопределенных ссылок, и моя IDE просто распознает все.

  • Кажется, есть проблемы с параметрами методов, потому что если я вызываю метод на client без каких-либо параметров, например client.commit() тогда он просто компилируется и запускается. Код, который я использую для библиотеки redis, я получил из примеров, которые они предоставляют, поэтому я предполагаю, что они верны.

Я серьезно понятия не имею, что происходит не так, это работает нормально, если я пытаюсь использовать его в проекте без catkin, Надеюсь, вы, ребята, сможете мне помочь. Спасибо!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector