php_lang_ref:Language Reference >> Generators >> Generator syntax

本文深入探讨PHP中的生成器概念及其实现方式,包括基本语法、使用案例和高级特性,如从数组或对象获取值。
<?php
// +----------------------------------------------------------------------
// | Created by activity.
// +----------------------------------------------------------------------
// | Language Reference >> Generators >> Generator syntax
// +----------------------------------------------------------------------
// | Author: alexander <gt199899@gmail.com>
// +----------------------------------------------------------------------
// | Datetime: 2017-07-14 16:46
// +----------------------------------------------------------------------
// | Perfect Is Shit
// +----------------------------------------------------------------------


/**
 * 生成器的主要目的就是实现对象迭代,并且比定义类实现Iterator接口的方式降低了开销和复杂性;
 * 生成器函数与普通的函数不同,普通的函数仅仅返回一次结果,而生成器函数可以根据需要yield多次(可以看做返回多次);
 * Generator对象是一个实现Iterator接口的类,但是这个类不能实例化,由生成器函数返回;
 * case1:生成器函数返回的是一个Generator对象;
 * case2:yield会返回一个值给循环调用此生成器的代码;
 * case3:生成器函数被调用一次,就返回一个按顺序取到的yield的值,并且暂停执行,直到下次被调用;
 * case4:可以指定键名来生成值;
 * case5:yield可以在没有参数传入的情况下被调用来生成一个NULL值并配对一个自动的键名;
 * case6:使用引用来生成值;
 * case7:PHP7中,yield可以通过from关键字,从别的生成器,数组或者Traversable object中获取返回值;
 * case8:生成器中不能返回值,否则产生一个错误(PHP7中不会,和return空一样的效果),但是return空是一个有效的语法并且会终止生成器继续执行;
 * case9:生成器返回的是Generator对象,可以使用Generator对象的方法来控制生成器;
 */

namespace case1;
function xrange($start, $limit, $step = 1)
{
    for ($i = $start; $i <= $limit; $i += $step) {
        yield $i;
    }
}

$object = xrange(1, 1000);
var_dump($object);
var_dump($object instanceof Iterator);
/**
 * 输出:
 * class Generator#1 (0) {
 * }
 * bool(true)
 */

namespace case2;
function gen_one_to_three()
{
    for ($i = 1; $i <= 3; $i++) {
        //注意变量$i的值在不同的yield之间是保持传递的。
        yield $i;
    }
}

foreach (gen_one_to_three() as $value) {
    echo "$value\n";
}
/**
 * 输出:
 * 1
 * 2
 * 3
 */

namespace case3;
function mul_yield()
{
    $ii = 1;
    for ($i = 1; $i <= 15; $i += 3) {
        yield "生成器内循环次数" . $ii;
        yield $i;
        yield $i + 1;
        yield $i + 2;
        $ii++;
    }
}

$i = 0;
$times = 1;
foreach (mul_yield() as $value) {
    if ($i >= $times) break;
    echo($value . "\n");
    $i++;
}
/**
 * 这里每当mul_yield生成器函数被调用一次,返回的是yield返回的值,并且暂停;
 * 注意并不是mul_yield被调用一次,将函数体执行一遍,仅仅是按顺序把yield返回到值输出;
 *
 * $times = 1 输出:
 * 生成器内循环次数1
 *
 * $times = 2 输出:
 * 生成器内循环次数1
 * 1
 *
 * $times = 15 输出:
 * 生成器内循环次数1
 * 1
 * 2
 * 3
 * 生成器内循环次数2
 * 4
 * 5
 * 6
 * 生成器内循环次数3
 * 7
 * 8
 * 9
 * 生成器内循环次数4
 * 10
 * 11
 */

namespace case4;
$input = <<<'EOF'
1;PHP;Likes dollar signs
2;Python;Likes whitespace
3;Ruby;Likes blocks
EOF;

function input_parser($input)
{
    foreach (explode("\n", $input) as $line) {
        $fields = explode(';', $line);
        $id = array_shift($fields);

        yield $id => $fields;
    }
}

foreach (input_parser($input) as $id => $fields) {
    echo "$id:\n";
    echo "    $fields[0]\n";
    echo "    $fields[1]\n";
}
// 输出:
//1:
//    PHP
//    Likes dollar signs
//2:
//    Python
//    Likes whitespace
//3:
//    Ruby
//    Likes blocks

namespace case5;
function gen_three_nulls()
{
    foreach (range(1, 3) as $i) {
        yield;
    }
}

var_dump(iterator_to_array(gen_three_nulls()));
// 输出:
//array(3) {
//        [0] =>
//  NULL
//  [1] =>
//  NULL
//  [2] =>
//  NULL
//}

namespace case6;
function &gen_reference()
{
    $value = 3;

    while ($value > 0) {
        yield $value;
    }
}

/*
 * 我们可以在循环中修改$number的值,而生成器是使用的引用值来生成,所以gen_reference()内部的$value值也会跟着变化。
 */
foreach (gen_reference() as &$number) {
    echo (--$number) . '... ';
}
/**
 * 输出:
 * 2... 1... 0...
 */

namespace case7;
function count_to_ten()
{
    yield 1;
    yield 2;
    yield from [3, 4];
    yield from new \ArrayIterator([5, 6]);
    yield from seven_eight();
    yield 9;
    yield 10;
}

function seven_eight()
{
    yield 7;
    yield from eight();
}

function eight()
{
    yield 8;
}

foreach (count_to_ten() as $num) {
    echo "$num ";
}
/**
 * 输出:
 * 1 2 3 4 5 6 7 8 9 10
 */

namespace case8;
function one_three()
{
    for ($i = 1; $i <= 3; $i++) {
        yield $i;
        if ($i == 2) return;
    }
}
foreach (one_three() as $value) {
    echo $value . " ";
}
/**
 * 输出:
 * 1 2
 */
function one_four()
{
    for ($i = 1; $i <= 4; $i++) {
        yield $i;
        return $i;
    }
}
$gen = one_four();
foreach ($gen as $value) {
    echo $value . " ";
}
echo $gen->getReturn();
/**
 * 手册上说生成器函数不能有返回值,否则会产生一个编译错误;
 * 但是PHP7这里返回值了之后,效果和返回空一样都是终止执行,并没有报错;
 * 使用getReturn()方法可以获取返回值;
 * 输出:
 * 1 1
 */

namespace case9;
function one_four()
{
    for ($i = 1; $i <= 4; $i++) {
        yield $i;
    }
}
$gen = one_four();
while (1) {
    $current = $gen->current();
    // 迭代器中没有值,返回空则终止循环
    if(!$current){
        break;
    }
    echo $current . " ";
    $gen->next();
}
/**
 * 输出:
 * 1 2 3 4
 */
robot-nanjing@robotnanjing-QiTianM430-N000:~/mytest/gripper_ws$ catkin_make Base path: /home/robot-nanjing/mytest/gripper_ws Source space: /home/robot-nanjing/mytest/gripper_ws/src Build space: /home/robot-nanjing/mytest/gripper_ws/build Devel space: /home/robot-nanjing/mytest/gripper_ws/devel Install space: /home/robot-nanjing/mytest/gripper_ws/install #### #### Running command: "cmake /home/robot-nanjing/mytest/gripper_ws/src -DCATKIN_DEVEL_PREFIX=/home/robot-nanjing/mytest/gripper_ws/devel -DCMAKE_INSTALL_PREFIX=/home/robot-nanjing/mytest/gripper_ws/install -G Unix Makefiles" in "/home/robot-nanjing/mytest/gripper_ws/build" #### -- The C compiler identification is GNU 9.4.0 -- The CXX compiler identification is GNU 9.4.0 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Using CATKIN_DEVEL_PREFIX: /home/robot-nanjing/mytest/gripper_ws/devel -- Using CMAKE_PREFIX_PATH: /opt/ros/noetic -- This workspace overlays: /opt/ros/noetic -- Found PythonInterp: /usr/bin/python3 (found suitable version "3.8.10", minimum required is "3") -- Using PYTHON_EXECUTABLE: /usr/bin/python3 -- Using Debian Python package layout -- Found PY_em: /usr/lib/python3/dist-packages/em.py -- Using empy: /usr/lib/python3/dist-packages/em.py -- Using CATKIN_ENABLE_TESTING: ON -- Call enable_testing() -- Using CATKIN_TEST_RESULTS_DIR: /home/robot-nanjing/mytest/gripper_ws/build/test_results -- Forcing gtest/gmock from source, though one was otherwise available. -- Found gtest sources under '/usr/src/googletest': gtests will be built -- Found gmock sources under '/usr/src/googletest': gmock will be built -- Found PythonInterp: /usr/bin/python3 (found version "3.8.10") -- Found Threads: TRUE -- Using Python nosetests: /usr/bin/nosetests3 -- catkin 0.8.12 -- BUILD_SHARED_LIBS is on -- BUILD_SHARED_LIBS is on -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- ~~ traversing 1 packages in topological order: -- ~~ - ssp_gripper -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- +++ processing catkin package: 'ssp_gripper' -- ==> add_subdirectory(ssp_gripper) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Check if compiler accepts -pthread -- Check if compiler accepts -pthread - yes -- Generating .msg files for action ssp_gripper/Grasp /home/robot-nanjing/mytest/gripper_ws/src/ssp_gripper/action/Grasp.action Generating for action Grasp -- Generating .msg files for action ssp_gripper/Homing /home/robot-nanjing/mytest/gripper_ws/src/ssp_gripper/action/Homing.action Generating for action Homing -- Generating .msg files for action ssp_gripper/Stop /home/robot-nanjing/mytest/gripper_ws/src/ssp_gripper/action/Stop.action Generating for action Stop -- Generating .msg files for action ssp_gripper/Move /home/robot-nanjing/mytest/gripper_ws/src/ssp_gripper/action/Move.action Generating for action Move -- ssp_gripper: 29 messages, 0 services -- === ENTER add example_state === -- === LEAVE add example_state === -- Found GTest: /usr/lib/x86_64-linux-gnu/libgtest.a -- Configuring done WARNING: Target "example_state" requests linking to directory "/home/robot-nanjing/aubo_sdk-0.26.0-rc.1-Linux_x86_64+ce93216/lib". Targets may link only to libraries. CMake is dropping the item. -- Generating done -- Build files have been written to: /home/robot-nanjing/mytest/gripper_ws/build #### #### Running command: "make -j16 -l16" in "/home/robot-nanjing/mytest/gripper_ws/build" #### Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_GraspEpsilon Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_MoveGoal Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_MoveActionFeedback Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_HomingGoal Scanning dependencies of target sensor_msgs_generate_messages_lisp Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_MoveActionResult Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_MoveAction Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_StopResult Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_StopGoal Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_StopActionFeedback Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_StopAction Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_MoveFeedback Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_MoveResult Scanning dependencies of target actionlib_msgs_generate_messages_py Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_HomingResult Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_StopFeedback [ 0%] Built target sensor_msgs_generate_messages_lisp [ 0%] Built target actionlib_msgs_generate_messages_py Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_MoveActionGoal [ 0%] Built target _ssp_gripper_generate_messages_check_deps_HomingGoal [ 0%] Built target _ssp_gripper_generate_messages_check_deps_MoveAction Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_GraspResult [ 0%] Built target _ssp_gripper_generate_messages_check_deps_MoveGoal [ 0%] Built target _ssp_gripper_generate_messages_check_deps_MoveActionResult Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_GraspAction [ 0%] Built target _ssp_gripper_generate_messages_check_deps_GraspEpsilon [ 0%] Built target _ssp_gripper_generate_messages_check_deps_StopAction [ 0%] Built target _ssp_gripper_generate_messages_check_deps_HomingResult [ 0%] Built target _ssp_gripper_generate_messages_check_deps_MoveResult [ 0%] Built target _ssp_gripper_generate_messages_check_deps_StopResult [ 0%] Built target _ssp_gripper_generate_messages_check_deps_StopActionFeedback Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_GraspActionResult [ 0%] Built target _ssp_gripper_generate_messages_check_deps_MoveActionFeedback [ 0%] Built target _ssp_gripper_generate_messages_check_deps_MoveFeedback [ 0%] Built target _ssp_gripper_generate_messages_check_deps_StopFeedback Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_GraspActionGoal Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_HomingActionFeedback Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_HomingAction Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_HomingActionGoal Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_GraspFeedback Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_GraspGoal Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_HomingFeedback Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_StopActionResult Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_StopActionGoal Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_HomingActionResult Scanning dependencies of target _ssp_gripper_generate_messages_check_deps_GraspActionFeedback [ 0%] Built target _ssp_gripper_generate_messages_check_deps_MoveActionGoal [ 0%] Built target _ssp_gripper_generate_messages_check_deps_StopGoal Scanning dependencies of target actionlib_msgs_generate_messages_lisp Scanning dependencies of target actionlib_msgs_generate_messages_eus [ 0%] Built target actionlib_msgs_generate_messages_lisp [ 0%] Built target actionlib_msgs_generate_messages_eus [ 0%] Built target _ssp_gripper_generate_messages_check_deps_GraspResult [ 0%] Built target _ssp_gripper_generate_messages_check_deps_GraspAction [ 0%] Built target _ssp_gripper_generate_messages_check_deps_HomingActionFeedback Scanning dependencies of target actionlib_msgs_generate_messages_cpp [ 0%] Built target _ssp_gripper_generate_messages_check_deps_GraspActionResult [ 0%] Built target _ssp_gripper_generate_messages_check_deps_GraspActionGoal Scanning dependencies of target geometry_msgs_generate_messages_eus Scanning dependencies of target std_msgs_generate_messages_nodejs [ 0%] Built target actionlib_msgs_generate_messages_cpp [ 0%] Built target _ssp_gripper_generate_messages_check_deps_GraspFeedback [ 0%] Built target _ssp_gripper_generate_messages_check_deps_HomingActionGoal Scanning dependencies of target rosgraph_msgs_generate_messages_nodejs [ 0%] Built target _ssp_gripper_generate_messages_check_deps_HomingFeedback Scanning dependencies of target actionlib_generate_messages_cpp [ 0%] Built target _ssp_gripper_generate_messages_check_deps_HomingAction [ 0%] Built target _ssp_gripper_generate_messages_check_deps_StopActionResult Scanning dependencies of target geometry_msgs_generate_messages_cpp Scanning dependencies of target control_msgs_generate_messages_py [ 0%] Built target _ssp_gripper_generate_messages_check_deps_GraspActionFeedback [ 0%] Built target _ssp_gripper_generate_messages_check_deps_HomingActionResult [ 0%] Built target _ssp_gripper_generate_messages_check_deps_StopActionGoal [ 0%] Built target std_msgs_generate_messages_nodejs [ 0%] Built target geometry_msgs_generate_messages_eus Scanning dependencies of target control_msgs_generate_messages_cpp Scanning dependencies of target std_msgs_generate_messages_py [ 0%] Built target rosgraph_msgs_generate_messages_nodejs Scanning dependencies of target roscpp_generate_messages_cpp Scanning dependencies of target control_msgs_generate_messages_eus [ 0%] Built target actionlib_generate_messages_cpp Scanning dependencies of target trajectory_msgs_generate_messages_nodejs Scanning dependencies of target actionlib_generate_messages_nodejs [ 0%] Built target geometry_msgs_generate_messages_cpp [ 0%] Built target control_msgs_generate_messages_py Scanning dependencies of target std_msgs_generate_messages_lisp Scanning dependencies of target trajectory_msgs_generate_messages_eus Scanning dependencies of target geometry_msgs_generate_messages_lisp Scanning dependencies of target roscpp_generate_messages_py [ 0%] Built target control_msgs_generate_messages_cpp [ 0%] Built target std_msgs_generate_messages_py Scanning dependencies of target roscpp_generate_messages_nodejs Scanning dependencies of target std_msgs_generate_messages_cpp [ 0%] Built target _ssp_gripper_generate_messages_check_deps_GraspGoal [ 0%] Built target roscpp_generate_messages_cpp Scanning dependencies of target actionlib_msgs_generate_messages_nodejs [ 0%] Built target control_msgs_generate_messages_eus [ 0%] Built target trajectory_msgs_generate_messages_nodejs [ 0%] Built target actionlib_generate_messages_nodejs [ 0%] Built target std_msgs_generate_messages_lisp [ 0%] Built target roscpp_generate_messages_py [ 0%] Built target geometry_msgs_generate_messages_lisp [ 0%] Built target trajectory_msgs_generate_messages_eus Scanning dependencies of target rosgraph_msgs_generate_messages_eus Scanning dependencies of target std_msgs_generate_messages_eus Scanning dependencies of target trajectory_msgs_generate_messages_cpp Scanning dependencies of target actionlib_generate_messages_py [ 0%] Built target roscpp_generate_messages_nodejs [ 0%] Built target std_msgs_generate_messages_cpp Scanning dependencies of target rosgraph_msgs_generate_messages_lisp Scanning dependencies of target roscpp_generate_messages_eus Scanning dependencies of target control_msgs_generate_messages_nodejs [ 0%] Built target actionlib_msgs_generate_messages_nodejs Scanning dependencies of target roscpp_generate_messages_lisp Scanning dependencies of target actionlib_generate_messages_lisp Scanning dependencies of target sensor_msgs_generate_messages_py Scanning dependencies of target geometry_msgs_generate_messages_nodejs Scanning dependencies of target geometry_msgs_generate_messages_py Scanning dependencies of target rosgraph_msgs_generate_messages_py [ 0%] Built target rosgraph_msgs_generate_messages_eus [ 0%] Built target std_msgs_generate_messages_eus [ 0%] Built target actionlib_generate_messages_py Scanning dependencies of target trajectory_msgs_generate_messages_lisp [ 0%] Built target trajectory_msgs_generate_messages_cpp Scanning dependencies of target actionlib_generate_messages_eus [ 0%] Built target geometry_msgs_generate_messages_py Scanning dependencies of target rosgraph_msgs_generate_messages_cpp [ 0%] Built target roscpp_generate_messages_eus [ 0%] Built target rosgraph_msgs_generate_messages_lisp [ 0%] Built target actionlib_generate_messages_lisp [ 0%] Built target control_msgs_generate_messages_nodejs [ 0%] Built target roscpp_generate_messages_lisp [ 0%] Built target geometry_msgs_generate_messages_nodejs [ 0%] Built target rosgraph_msgs_generate_messages_py [ 0%] Built target sensor_msgs_generate_messages_py Scanning dependencies of target sensor_msgs_generate_messages_cpp Scanning dependencies of target trajectory_msgs_generate_messages_py [ 0%] Built target trajectory_msgs_generate_messages_lisp Scanning dependencies of target sensor_msgs_generate_messages_eus Scanning dependencies of target sensor_msgs_generate_messages_nodejs [ 0%] Built target rosgraph_msgs_generate_messages_cpp [ 0%] Built target actionlib_generate_messages_eus Scanning dependencies of target example_state Scanning dependencies of target control_msgs_generate_messages_lisp [ 0%] Built target sensor_msgs_generate_messages_cpp Scanning dependencies of target ssp_gripper_generate_messages_eus [ 0%] Built target sensor_msgs_generate_messages_nodejs [ 0%] Built target trajectory_msgs_generate_messages_py Scanning dependencies of target ssp_gripper_generate_messages_lisp [ 0%] Built target sensor_msgs_generate_messages_eus Scanning dependencies of target ssp_gripper_generate_messages_nodejs Scanning dependencies of target ssp_gripper_generate_messages_cpp Scanning dependencies of target ssp_gripper_generate_messages_py [ 0%] Built target control_msgs_generate_messages_lisp [ 1%] Building CXX object ssp_gripper/CMakeFiles/example_state.dir/src/example_state.cpp.o [ 1%] Generating EusLisp code from ssp_gripper/GraspGoal.msg [ 1%] Generating EusLisp code from ssp_gripper/GraspResult.msg [ 1%] Generating EusLisp code from ssp_gripper/GraspActionResult.msg [ 1%] Generating EusLisp code from ssp_gripper/GraspAction.msg [ 4%] Generating Lisp code from ssp_gripper/GraspActionGoal.msg [ 6%] Generating EusLisp code from ssp_gripper/HomingAction.msg [ 6%] Generating EusLisp code from ssp_gripper/GraspFeedback.msg [ 6%] Generating Lisp code from ssp_gripper/GraspAction.msg [ 6%] Generating EusLisp code from ssp_gripper/GraspActionGoal.msg [ 6%] Generating Javascript code from ssp_gripper/GraspAction.msg [ 6%] Generating EusLisp code from ssp_gripper/GraspActionFeedback.msg [ 7%] Generating EusLisp code from ssp_gripper/HomingActionGoal.msg [ 9%] Generating C++ code from ssp_gripper/GraspAction.msg [ 9%] Generating Python from MSG ssp_gripper/GraspAction [ 10%] Generating Javascript code from ssp_gripper/GraspActionGoal.msg [ 11%] Generating Javascript code from ssp_gripper/GraspActionFeedback.msg [ 11%] Generating Javascript code from ssp_gripper/GraspActionResult.msg [ 11%] Generating Lisp code from ssp_gripper/GraspActionResult.msg [ 12%] Generating Javascript code from ssp_gripper/GraspGoal.msg [ 12%] Generating Javascript code from ssp_gripper/GraspResult.msg [ 15%] Generating Lisp code from ssp_gripper/GraspResult.msg [ 15%] Generating Lisp code from ssp_gripper/GraspActionFeedback.msg [ 15%] Generating Lisp code from ssp_gripper/GraspGoal.msg [ 15%] Generating Lisp code from ssp_gripper/GraspFeedback.msg [ 17%] Generating Lisp code from ssp_gripper/HomingAction.msg [ 17%] Generating Lisp code from ssp_gripper/HomingActionGoal.msg [ 18%] Generating Javascript code from ssp_gripper/GraspFeedback.msg [ 18%] Generating EusLisp code from ssp_gripper/HomingActionResult.msg [ 18%] Generating Javascript code from ssp_gripper/HomingAction.msg [ 18%] Generating C++ code from ssp_gripper/GraspActionGoal.msg [ 18%] Generating Lisp code from ssp_gripper/HomingActionResult.msg [ 19%] Generating Javascript code from ssp_gripper/HomingActionGoal.msg [ 20%] Generating EusLisp code from ssp_gripper/HomingActionFeedback.msg [ 21%] Generating Lisp code from ssp_gripper/HomingActionFeedback.msg [ 21%] Generating Python from MSG ssp_gripper/GraspActionGoal [ 21%] Generating EusLisp code from ssp_gripper/HomingGoal.msg [ 23%] Generating C++ code from ssp_gripper/GraspActionResult.msg [ 23%] Generating EusLisp code from ssp_gripper/HomingResult.msg [ 24%] Generating C++ code from ssp_gripper/GraspActionFeedback.msg [ 24%] Generating Lisp code from ssp_gripper/HomingGoal.msg [ 24%] Generating Javascript code from ssp_gripper/HomingActionResult.msg [ 24%] Generating C++ code from ssp_gripper/GraspGoal.msg [ 25%] Generating Python from MSG ssp_gripper/GraspActionResult [ 25%] Generating Python from MSG ssp_gripper/GraspActionFeedback [ 26%] Generating Python from MSG ssp_gripper/GraspGoal [ 27%] Generating EusLisp code from ssp_gripper/HomingFeedback.msg [ 27%] Generating Lisp code from ssp_gripper/HomingResult.msg [ 29%] Generating Javascript code from ssp_gripper/HomingActionFeedback.msg [ 29%] Generating Lisp code from ssp_gripper/HomingFeedback.msg [ 29%] Generating Javascript code from ssp_gripper/HomingGoal.msg [ 29%] Generating Python from MSG ssp_gripper/GraspResult [ 30%] Generating EusLisp code from ssp_gripper/StopAction.msg [ 31%] Generating Python from MSG ssp_gripper/GraspFeedback [ 32%] Generating Python from MSG ssp_gripper/HomingAction [ 33%] Generating Lisp code from ssp_gripper/StopAction.msg [ 33%] Generating Python from MSG ssp_gripper/HomingActionGoal [ 34%] Generating C++ code from ssp_gripper/GraspResult.msg [ 35%] Generating Javascript code from ssp_gripper/HomingResult.msg [ 35%] Generating C++ code from ssp_gripper/GraspFeedback.msg [ 36%] Generating EusLisp code from ssp_gripper/StopActionGoal.msg [ 36%] Generating Lisp code from ssp_gripper/StopActionGoal.msg [ 37%] Generating C++ code from ssp_gripper/HomingAction.msg [ 37%] Generating C++ code from ssp_gripper/HomingActionGoal.msg [ 38%] Generating Python from MSG ssp_gripper/HomingActionResult [ 39%] Generating Python from MSG ssp_gripper/HomingActionFeedback [ 39%] Generating Javascript code from ssp_gripper/HomingFeedback.msg [ 40%] Generating Lisp code from ssp_gripper/StopActionResult.msg [ 40%] Generating EusLisp code from ssp_gripper/StopActionResult.msg [ 41%] Generating Python from MSG ssp_gripper/HomingGoal [ 43%] Generating EusLisp code from ssp_gripper/StopActionFeedback.msg [ 43%] Generating EusLisp code from ssp_gripper/StopGoal.msg [ 43%] Generating Python from MSG ssp_gripper/HomingResult [ 43%] Generating Javascript code from ssp_gripper/StopAction.msg [ 44%] Generating Lisp code from ssp_gripper/StopActionFeedback.msg [ 45%] Generating Javascript code from ssp_gripper/StopActionGoal.msg [ 46%] Generating C++ code from ssp_gripper/HomingActionResult.msg [ 46%] Generating Python from MSG ssp_gripper/StopAction [ 47%] Generating EusLisp code from ssp_gripper/StopResult.msg [ 48%] Generating Python from MSG ssp_gripper/HomingFeedback [ 48%] Generating Javascript code from ssp_gripper/StopActionResult.msg [ 49%] Generating Python from MSG ssp_gripper/StopActionGoal [ 50%] Generating Lisp code from ssp_gripper/StopGoal.msg [ 50%] Generating Lisp code from ssp_gripper/StopResult.msg [ 50%] Generating Lisp code from ssp_gripper/StopFeedback.msg [ 51%] Generating Lisp code from ssp_gripper/MoveActionGoal.msg [ 51%] Generating Lisp code from ssp_gripper/MoveAction.msg [ 52%] Generating Javascript code from ssp_gripper/StopActionFeedback.msg [ 53%] Generating Python from MSG ssp_gripper/StopActionResult [ 54%] Generating Lisp code from ssp_gripper/MoveActionFeedback.msg [ 55%] Generating Lisp code from ssp_gripper/MoveActionResult.msg [ 55%] Generating Lisp code from ssp_gripper/MoveGoal.msg [ 55%] Generating EusLisp code from ssp_gripper/StopFeedback.msg [ 55%] Generating Javascript code from ssp_gripper/StopGoal.msg [ 56%] Generating EusLisp code from ssp_gripper/MoveAction.msg [ 56%] Generating Python from MSG ssp_gripper/StopActionFeedback [ 58%] Generating Javascript code from ssp_gripper/StopResult.msg [ 58%] Generating C++ code from ssp_gripper/HomingActionFeedback.msg [ 59%] Generating Python from MSG ssp_gripper/StopGoal [ 60%] Generating Lisp code from ssp_gripper/MoveResult.msg [ 60%] Generating Lisp code from ssp_gripper/MoveFeedback.msg [ 60%] Generating Python from MSG ssp_gripper/StopResult [ 61%] Generating Lisp code from ssp_gripper/GraspEpsilon.msg [ 62%] Generating Python from MSG ssp_gripper/StopFeedback [ 63%] Generating Javascript code from ssp_gripper/StopFeedback.msg [ 63%] Generating Python from MSG ssp_gripper/MoveAction [ 64%] Generating EusLisp code from ssp_gripper/MoveActionGoal.msg [ 64%] Generating Javascript code from ssp_gripper/MoveAction.msg [ 66%] Generating Python from MSG ssp_gripper/MoveActionGoal [ 66%] Generating Javascript code from ssp_gripper/MoveActionGoal.msg [ 66%] Built target ssp_gripper_generate_messages_lisp [ 66%] Generating Javascript code from ssp_gripper/MoveActionResult.msg [ 67%] Generating Javascript code from ssp_gripper/MoveActionFeedback.msg [ 67%] Generating Javascript code from ssp_gripper/MoveGoal.msg [ 67%] Generating EusLisp code from ssp_gripper/MoveActionResult.msg [ 67%] Generating Javascript code from ssp_gripper/MoveFeedback.msg [ 68%] Generating Javascript code from ssp_gripper/MoveResult.msg [ 72%] Generating C++ code from ssp_gripper/HomingGoal.msg [ 72%] Generating Python from MSG ssp_gripper/MoveActionResult [ 72%] Generating C++ code from ssp_gripper/HomingResult.msg [ 73%] Generating EusLisp code from ssp_gripper/MoveActionFeedback.msg [ 74%] Generating Javascript code from ssp_gripper/GraspEpsilon.msg [ 74%] Generating C++ code from ssp_gripper/HomingFeedback.msg [ 74%] Generating Python from MSG ssp_gripper/MoveActionFeedback [ 75%] Generating Python from MSG ssp_gripper/MoveGoal [ 75%] Generating Python from MSG ssp_gripper/MoveResult [ 77%] Generating Python from MSG ssp_gripper/MoveFeedback [ 77%] Generating C++ code from ssp_gripper/StopAction.msg [ 77%] Generating Python from MSG ssp_gripper/GraspEpsilon [ 77%] Built target ssp_gripper_generate_messages_nodejs [ 77%] Generating EusLisp code from ssp_gripper/MoveGoal.msg [ 77%] Generating C++ code from ssp_gripper/StopActionGoal.msg [ 78%] Generating EusLisp code from ssp_gripper/MoveResult.msg [ 79%] Generating C++ code from ssp_gripper/StopActionResult.msg [ 79%] Generating C++ code from ssp_gripper/StopActionFeedback.msg [ 80%] Linking CXX executable /home/robot-nanjing/mytest/gripper_ws/devel/lib/ssp_gripper/example_state [ 81%] Generating C++ code from ssp_gripper/StopGoal.msg [ 82%] Generating C++ code from ssp_gripper/StopResult.msg [ 82%] Generating EusLisp code from ssp_gripper/MoveFeedback.msg [ 83%] Generating EusLisp code from ssp_gripper/GraspEpsilon.msg [ 83%] Generating C++ code from ssp_gripper/StopFeedback.msg [ 83%] Generating EusLisp manifest code for ssp_gripper [ 84%] Generating C++ code from ssp_gripper/MoveAction.msg [ 86%] Generating C++ code from ssp_gripper/MoveActionGoal.msg [ 86%] Generating C++ code from ssp_gripper/MoveActionResult.msg [ 86%] Generating C++ code from ssp_gripper/MoveActionFeedback.msg [ 87%] Generating C++ code from ssp_gripper/MoveGoal.msg [ 87%] Generating C++ code from ssp_gripper/MoveResult.msg [ 88%] Generating C++ code from ssp_gripper/MoveFeedback.msg [ 89%] Generating C++ code from ssp_gripper/GraspEpsilon.msg /usr/bin/ld: CMakeFiles/example_state.dir/src/example_state.cpp.o: in function `exampleState(std::shared_ptr<arcs::aubo_sdk::RpcClient>)': example_state.cpp:(.text+0x65): undefined reference to `arcs::common_interface::AuboApi::getRobotNames[abi:cxx11]()' /usr/bin/ld: example_state.cpp:(.text+0xc3): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0xe7): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0xfe): undefined reference to `arcs::common_interface::RobotState::getRobotModeType()' /usr/bin/ld: example_state.cpp:(.text+0x188): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x1ac): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x1c3): undefined reference to `arcs::common_interface::RobotState::getSafetyModeType()' /usr/bin/ld: example_state.cpp:(.text+0x24d): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x271): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x288): undefined reference to `arcs::common_interface::RobotState::isSteady()' /usr/bin/ld: example_state.cpp:(.text+0x326): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x34a): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x361): undefined reference to `arcs::common_interface::RobotState::isWithinSafetyLimits()' /usr/bin/ld: example_state.cpp:(.text+0x40e): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x432): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x456): undefined reference to `arcs::common_interface::RobotState::getTcpPose()' /usr/bin/ld: example_state.cpp:(.text+0x558): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x57c): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x5a0): undefined reference to `arcs::common_interface::RobotState::getToolPose()' /usr/bin/ld: example_state.cpp:(.text+0x6a2): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x6c6): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x6ea): undefined reference to `arcs::common_interface::RobotState::getJointState()' /usr/bin/ld: example_state.cpp:(.text+0x7ec): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x810): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x834): undefined reference to `arcs::common_interface::RobotState::getJointServoMode()' /usr/bin/ld: example_state.cpp:(.text+0x936): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x95a): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x97e): undefined reference to `arcs::common_interface::RobotState::getJointPositions()' /usr/bin/ld: example_state.cpp:(.text+0xa80): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0xaa4): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0xac8): undefined reference to `arcs::common_interface::RobotState::getJointCurrents()' /usr/bin/ld: example_state.cpp:(.text+0xbca): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0xbee): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0xc12): undefined reference to `arcs::common_interface::RobotState::getJointVoltages()' /usr/bin/ld: example_state.cpp:(.text+0xd14): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0xd38): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0xd5c): undefined reference to `arcs::common_interface::RobotState::getJointTemperatures()' /usr/bin/ld: example_state.cpp:(.text+0xe5e): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0xe82): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0xea6): undefined reference to `arcs::common_interface::RobotState::getJointUniqueIds[abi:cxx11]()' /usr/bin/ld: example_state.cpp:(.text+0xfa8): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0xfcc): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0xff0): undefined reference to `arcs::common_interface::RobotState::getJointFirmwareVersions()' /usr/bin/ld: example_state.cpp:(.text+0x10f2): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x1116): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x113a): undefined reference to `arcs::common_interface::RobotState::getJointHardwareVersions()' /usr/bin/ld: example_state.cpp:(.text+0x123c): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x1260): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x1284): undefined reference to `arcs::common_interface::RobotState::getMasterBoardUniqueId[abi:cxx11]()' /usr/bin/ld: example_state.cpp:(.text+0x1332): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x1356): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x136d): undefined reference to `arcs::common_interface::RobotState::getMasterBoardFirmwareVersion()' /usr/bin/ld: example_state.cpp:(.text+0x13f7): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x141b): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x1432): undefined reference to `arcs::common_interface::RobotState::getMasterBoardHardwareVersion()' /usr/bin/ld: example_state.cpp:(.text+0x14cb): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x14ef): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x1513): undefined reference to `arcs::common_interface::RobotState::getSlaveBoardUniqueId[abi:cxx11]()' /usr/bin/ld: example_state.cpp:(.text+0x15c1): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x15e5): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x15fc): undefined reference to `arcs::common_interface::RobotState::getSlaveBoardFirmwareVersion()' /usr/bin/ld: example_state.cpp:(.text+0x1686): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x16aa): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x16c1): undefined reference to `arcs::common_interface::RobotState::getSlaveBoardHardwareVersion()' /usr/bin/ld: example_state.cpp:(.text+0x175a): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x177e): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x179f): undefined reference to `arcs::common_interface::RobotState::getToolUniqueId[abi:cxx11]()' /usr/bin/ld: example_state.cpp:(.text+0x1847): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x186b): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x1882): undefined reference to `arcs::common_interface::RobotState::getToolFirmwareVersion()' /usr/bin/ld: example_state.cpp:(.text+0x190c): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x1930): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x1947): undefined reference to `arcs::common_interface::RobotState::getToolHardwareVersion()' /usr/bin/ld: example_state.cpp:(.text+0x19dd): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x1a01): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x1a22): undefined reference to `arcs::common_interface::RobotState::getPedestalUniqueId[abi:cxx11]()' /usr/bin/ld: example_state.cpp:(.text+0x1ac4): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x1ae8): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x1aff): undefined reference to `arcs::common_interface::RobotState::getPedestalFirmwareVersion()' /usr/bin/ld: example_state.cpp:(.text+0x1b89): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x1bad): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x1bc4): undefined reference to `arcs::common_interface::RobotState::getPedestalHardwareVersion()' /usr/bin/ld: example_state.cpp:(.text+0x1c5d): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x1c81): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x1ca5): undefined reference to `arcs::common_interface::RobotState::getJointTargetPositions()' /usr/bin/ld: example_state.cpp:(.text+0x1d98): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x1dbc): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x1dd3): undefined reference to `arcs::common_interface::RobotState::getControlBoxTemperature()' /usr/bin/ld: example_state.cpp:(.text+0x1e67): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x1e8b): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x1ea2): undefined reference to `arcs::common_interface::RobotState::getMainVoltage()' /usr/bin/ld: example_state.cpp:(.text+0x1f36): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x1f5a): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x1f71): undefined reference to `arcs::common_interface::RobotState::getMainCurrent()' /usr/bin/ld: example_state.cpp:(.text+0x2005): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x2029): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x2040): undefined reference to `arcs::common_interface::RobotState::getRobotVoltage()' /usr/bin/ld: example_state.cpp:(.text+0x20d4): undefined reference to `arcs::common_interface::AuboApi::getRobotInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x20f8): undefined reference to `arcs::common_interface::RobotInterface::getRobotState()' /usr/bin/ld: example_state.cpp:(.text+0x210f): undefined reference to `arcs::common_interface::RobotState::getRobotCurrent()' /usr/bin/ld: CMakeFiles/example_state.dir/src/example_state.cpp.o: in function `main': example_state.cpp:(.text+0x2e96): undefined reference to `arcs::aubo_sdk::RpcClient::setRequestTimeout(int)' /usr/bin/ld: example_state.cpp:(.text+0x2edc): undefined reference to `arcs::aubo_sdk::RpcClient::connect(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' /usr/bin/ld: example_state.cpp:(.text+0x2f62): undefined reference to `arcs::aubo_sdk::RpcClient::login(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: example_state.cpp:(.text+0x2fd4): undefined reference to `arcs::aubo_sdk::RpcClient::logout()' /usr/bin/ld: example_state.cpp:(.text+0x2fe8): undefined reference to `arcs::aubo_sdk::RpcClient::disconnect()' /usr/bin/ld: CMakeFiles/example_state.dir/src/example_state.cpp.o: in function `void __gnu_cxx::new_allocator<arcs::aubo_sdk::RpcClient>::construct<arcs::aubo_sdk::RpcClient>(arcs::aubo_sdk::RpcClient*)': example_state.cpp:(.text._ZN9__gnu_cxx13new_allocatorIN4arcs8aubo_sdk9RpcClientEE9constructIS3_JEEEvPT_DpOT0_[_ZN9__gnu_cxx13new_allocatorIN4arcs8aubo_sdk9RpcClientEE9constructIS3_JEEEvPT_DpOT0_]+0x36): undefined reference to `arcs::aubo_sdk::RpcClient::RpcClient(int)' collect2: error: ld returned 1 exit status make[2]: *** [ssp_gripper/CMakeFiles/example_state.dir/build.make:84:/home/robot-nanjing/mytest/gripper_ws/devel/lib/ssp_gripper/example_state] 错误 1 make[1]: *** [CMakeFiles/Makefile2:925:ssp_gripper/CMakeFiles/example_state.dir/all] 错误 2 make[1]: *** 正在等待未完成的任务.... [ 90%] Generating Python msg __init__.py for ssp_gripper [ 90%] Built target ssp_gripper_generate_messages_cpp [ 90%] Built target ssp_gripper_generate_messages_py [ 90%] Built target ssp_gripper_generate_messages_eus make: *** [Makefile:141:all] 错误 2 Invoking "make -j16 -l16" failed robot-nanjing@robotnanjing-QiTianM430-N000:~/mytest/gripper_ws$
最新发布
09-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值