Hi all, I am trying to compile some C++ code with ROS, examining a service and client. Before attempting to run the service, I tried to 'make' the stack with the two source codes in it. Here is the code and the output of the command: $ roscd beginner_tutorials $ make mkdir -p bin cd build && cmake -Wdev -DCMAKE_TOOLCHAIN_FILE=`rospack find rosbuild`/rostoolchain.cmake .. [rosbuild] Building package beginner_tutorials [rosbuild] Including /home/ian/ros/ros/core/rospy/cmake/rospy.cmake [rosbuild] Including /home/ian/ros/ros/core/roscpp/cmake/roscpp.cmake -- Configuring done -- Generating done -- Build files have been written to: /home/ian/ros/ros/ros_tutorials/beginner_tutorials/build cd build && make make[1]: Entering directory `/home/ian/ros/ros/ros_tutorials/beginner_tutorials/build' make[2]: Entering directory `/home/ian/ros/ros/ros_tutorials/beginner_tutorials/build' make[3]: Entering directory `/home/ian/ros/ros/ros_tutorials/beginner_tutorials/build' make[3]: Leaving directory `/home/ian/ros/ros/ros_tutorials/beginner_tutorials/build' [ 0%] Built target rospack_genmsg_libexe make[3]: Entering directory `/home/ian/ros/ros/ros_tutorials/beginner_tutorials/build' make[3]: Leaving directory `/home/ian/ros/ros/ros_tutorials/beginner_tutorials/build' [ 0%] Built target rosbuild_precompile make[3]: Entering directory `/home/ian/ros/ros/ros_tutorials/beginner_tutorials/build' make[3]: Leaving directory `/home/ian/ros/ros/ros_tutorials/beginner_tutorials/build' make[3]: Entering directory `/home/ian/ros/ros/ros_tutorials/beginner_tutorials/build' [ 50%] Building CXX object CMakeFiles/add_two_ints_client.dir/src/add_two_ints_client.o /home/ian/ros/ros/ros_tutorials/beginner_tutorials/src/add_two_ints_client.cpp: In function ‘int main(int, char**)’: /home/ian/ros/ros/ros_tutorials/beginner_tutorials/src/add_two_ints_client.cpp:15: error: no matching function for call to ‘beginner_tutorials::AddTwoInts::AddTwoInts(const char [13])’ /home/ian/ros/ros/ros_tutorials/beginner_tutorials/src/AddTwoInts.h:16: note: candidates are: beginner_tutorials::AddTwoInts::AddTwoInts() /home/ian/ros/ros/ros_tutorials/beginner_tutorials/src/AddTwoInts.h:16: note: beginner_tutorials::AddTwoInts::AddTwoInts(const beginner_tutorials::AddTwoInts&) /home/ian/ros/ros/ros_tutorials/beginner_tutorials/src/add_two_ints_client.cpp:15: error: parse error in template argument list /home/ian/ros/ros/ros_tutorials/beginner_tutorials/src/add_two_ints_client.cpp:15: error: conversion from ‘’ to non-scalar type ‘ros::ServiceClient’ requested make[3]: *** [CMakeFiles/add_two_ints_client.dir/src/add_two_ints_client.o] Error 1 make[3]: Leaving directory `/home/ian/ros/ros/ros_tutorials/beginner_tutorials/build' make[2]: *** [CMakeFiles/add_two_ints_client.dir/all] Error 2 make[2]: Leaving directory `/home/ian/ros/ros/ros_tutorials/beginner_tutorials/build' make[1]: *** [all] Error 2 make[1]: Leaving directory `/home/ian/ros/ros/ros_tutorials/beginner_tutorials/build' make: *** [all] Error 2 my source files are in an "src" package located in the "beginner_tutorials" package, and my header files are located in the same folder as the cpp source files.. Here are the two programs: ------------------------------------ add_two_ints_server.cpp ------------------------------------ #include "ros.h" #include "AddTwoInts.h" bool add(beginner_tutorials::AddTwoInts::Request &req, beginner_tutorials::AddTwoInts::Response &res ) { res.sum = req.a + req.b; ROS_INFO("request: x=%ld, y=%ld", (long int)req.a, (long int)req.b); ROS_INFO("sending back response: [%ld]", (long int)res.sum); return true; } int main(int argc, char **argv) { ros::init(argc, argv, "add_two_ints_server"); ros::NodeHandle n; ros::ServiceServer service = n.advertiseService("add_two_ints", add); ROS_INFO("Ready to add two ints."); ros::spin(); return 0; } ------------------------------------- add_two_ints_client.cpp ------------------------------------- #include "ros.h" #include "AddTwoInts.h" #include int main(int argc, char **argv) { ros::init(argc, argv, "add_two_ints_client"); if (argc != 3) { ROS_INFO("usage: add_two_ints_client X Y"); return 1; } ros::NodeHandle n; ros::ServiceClient client = n.serviceClient