error_messages 替代

本文介绍了一种在Rails应用中自定义错误显示的方法。通过修改ActionView::Base.field_error_proc,可以实现更美观且统一的错误提示样式。此过程涉及HTML标签的匹配与替换,能够显著提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
  error_class = "fieldWithErrors"
  if html_tag =~ /<(label)/
    %Q{
      <div class="#{error_class}">
        #{html_tag}
        <span class="error">#{instance.error_message.respond_to?(:uniq) ? instance.error_message.uniq.join(',') : instance.error_message }</span>
      </div>
    }
  elsif html_tag =~ /<(input|textarea|select)/
    html_tag
  else
    html_tag
  end
end
 
关于msg的文章目中处理Error Msg的方法小结不针对任何人的说: 看到有人把Error Msg写死到代码里,我就有上去忽他一巴掌的冲动。比如如下代码: int funcFoo() { UpdateData(); int error_code = 0; if (!IsInPutsUseName()) error_code = -1; else if(!IsInputAllPsw()) error_code = -2; else if(!IsTwoPswTheSame()) error_code = -3; else if(!IsThePswMachWithDatabase()) error_code = -4; if (error_code != 0) { switch(error_code) { case -1 : MessageBox("请输入用户名,然后重试!", "未输入用户名", MB_OK | MB_ICONWARNING); break; case -2 : MessageBox("请输入所有的密码,然后重试!", "未输入密码", MB_OK | MB_ICONWARNING); break; case -3 : MessageBox("您输入的两次密码不一致,请重新输入!", "密码不一致", MB_OK | MB_ICONWARNING); break; case -4 : MessageBox("您输入的密码错误,请重新输入", "密码错误", MB_OK | MB_ICONWARNING); break; case default : break; } DeleteInputPsw(); return error_code; } UpdateData(false); return error_code; } 理由如下: 1. 这样的源码不易阅读。假设用户提供的一个错误信息,我要追踪其源码,我去那里找呀?可能有很多处地方都会有重复的类似的MSG出现,比如"请输入用户名,然后重试!"和"请您输入用户名,然后重试!"就会被认为是2条不同的MSG。这样很难排错。 2. 用户那里有可能弹出你估计之外的错误。实际上我们经常遇到这种情况,某程序崩溃探出一个错误号,没信息。因为没有对应好。 3. 不利于发展为多语言版本?(你指望专业翻译在你的代码里搜索字符串?) 4.不利于全局统计。估计自己都不知道自己的工程里已经存在了多少种MSG字符串了吧? 5.专业软件的错误信息是应该由专业语言措辞人员去对应的,而不是由程序员决定最终的版本。比如我代码里写一个errorcode:992,“没输密码!”,就会被专业措辞人员修饰为"请输入用户名,然后重试!" 解决的方法 也有多种,各有其优点和不足之处,写在这里供大家参考: 1.最古老的做法,是把信息写入一个文本文件里面: // xxxxxxxxxx 一些注释 xxxxxxxxxxx // xxxxxxxxxx 一些注释 xxxxxxxxxxx // xxxxx Error Code : 998 // xxxxx Msg : "请输入用户名,然后重试!" // xxxxx 描述: ... #define Error_998_MSG "请输入用户名,然后重试!" // xxxxxxxxxx 一些注释 xxxxxxxxxxx // xxxxxxxxxx 一些注释 xxxxxxxxxxx // xxxxx Error Code : 999 // xxxxx Msg : "xxxxxxxxx, xxxxxxxxxxxxxxx!" // xxxxx 描述: ... #define Error_999_MSG "xxxxxxxxxxxxxxxx!" 诸如此类的做法,当系统启动的时候把这些资源读入内存中 优点:已经基本上解决了上述所说的弊病; 缺点:跨平台交互不容易,尤其是文件内码不同的情况,比如utf-8环境、ansi char环境、unicode环境........... 2. 写入xml文件里面:(推荐) 这种做法和上述方法类似,不过解决了上述方法的缺点。常用于Web相关的开发。 优点:标记语言,交互方便。扩展方便,功能强大且无限制。 缺点:编写人员必须熟悉xml语法,或者有专用的用于简化生成这个xml文件的程序。 3. 写入数据库里面: 应用这种方法的也很多,我就遇到若干这种做法的项目。形象一点的说,你可以参考Sql Server中的错误信息,它也是写在一个系统表里面。 优点:利用SQL的优势,编写、修改都很方便,程序员、翻译、维护人员和用户都很轻松。客户甚至可以自己修改MSG信息。 缺点:一般这种做法只用于数据库相关的应用,比如MIS系统。另外,如果出现数据库根本连接不上的错误,这种错误信息还要当作特例解决。 另外,交互-速度较慢。 今天在论坛上偶见此问题,遂废话一堆,抛砖引玉,希望大家批评指正。 -------------
一、综合实战—使用极轴追踪方式绘制信号灯 实战目标:利用对象捕捉追踪和极轴追踪功能创建信号灯图形 技术要点:结合两种追踪方式实现精确绘图,适用于工程制图中需要精确定位的场景 1. 切换至AutoCAD 操作步骤: 启动AutoCAD 2016软件 打开随书光盘中的素材文件 确认工作空间为"草图与注释"模式 2. 绘图设置 1)草图设置对话框 打开方式:通过"工具→绘图设置"菜单命令 功能定位:该对话框包含捕捉、追踪等核心绘图辅助功能设置 2)对象捕捉设置 关键配置: 启用对象捕捉(F3快捷键) 启用对象捕捉追踪(F11快捷键) 勾选端点、中心、圆心、象限点等常用捕捉模式 追踪原理:命令执行时悬停光标可显示追踪矢量,再次悬停可停止追踪 3)极轴追踪设置 参数设置: 启用极轴追踪功能 设置角度增量为45度 确认后退出对话框 3. 绘制信号灯 1)绘制圆形 执行命令:"绘图→圆→圆心、半径"命令 绘制过程: 使用对象捕捉追踪定位矩形中心作为圆心 输入半径值30并按Enter确认 通过象限点捕捉确保圆形位置准确 2)绘制直线 操作要点: 选择"绘图→直线"命令 捕捉矩形上边中点作为起点 捕捉圆的上象限点作为终点 按Enter结束当前直线命令 重复技巧: 按Enter可重复最近使用的直线命令 通过圆心捕捉和极轴追踪绘制放射状直线 最终形成完整的信号灯指示图案 3)完成绘制 验证要点: 检查所有直线是否准确连接圆心和象限点 确认极轴追踪的45度增量是否体现 保存绘图文件(快捷键Ctrl+S)
ucar_ws$ catkin_make Base path: /home/haha/ucar_ws Source space: /home/haha/ucar_ws/src Build space: /home/haha/ucar_ws/build Devel space: /home/haha/ucar_ws/devel Install space: /home/haha/ucar_ws/install #### #### Running command: "cmake /home/haha/ucar_ws/src -DCATKIN_DEVEL_PREFIX=/home/haha/ucar_ws/devel -DCMAKE_INSTALL_PREFIX=/home/haha/ucar_ws/install -G Unix Makefiles" in "/home/haha/ucar_ws/build" #### CMake Warning (dev) in CMakeLists.txt: No project() command is present. The top-level CMakeLists.txt file must contain a literal, direct call to the project() command. Add a line of code such as project(ProjectName) near the top of the file, but after cmake_minimum_required(). CMake is pretending there is a "project(Project)" command on the first line. This warning is for project developers. Use -Wno-dev to suppress it. -- 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/haha/ucar_ws/devel -- Using CMAKE_PREFIX_PATH: /home/haha/gazebo_test_ws/devel;/home/haha/catkin_ws/devel;/opt/ros/noetic -- This workspace overlays: /home/haha/gazebo_test_ws/devel;/home/haha/catkin_ws/devel;/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/haha/ucar_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 39 packages in topological order: -- ~~ - geometry (metapackage) -- ~~ - geometry2 (metapackage) -- ~~ - navigation (metapackage) -- ~~ - eigen_conversions -- ~~ - kdl_conversions -- ~~ - tf2_msgs -- ~~ - tf2 -- ~~ - tf2_bullet -- ~~ - tf2_eigen -- ~~ - map_server -- ~~ - speech_command -- ~~ - tf2_py -- ~~ - tf -- ~~ - fdilink_ahrs -- ~~ - tf2_geometry_msgs -- ~~ - amcl -- ~~ - fake_localization -- ~~ - tf2_kdl -- ~~ - test_tf2 -- ~~ - tf2_sensor_msgs -- ~~ - tf2_tools -- ~~ - tf_conversions -- ~~ - ucar_camera -- ~~ - ucar_controller -- ~~ - ucar_map -- ~~ - ucar_nav -- ~~ - voxel_grid -- ~~ - costmap_2d -- ~~ - nav_core -- ~~ - base_local_planner -- ~~ - carrot_planner -- ~~ - clear_costmap_recovery -- ~~ - dwa_local_planner -- ~~ - move_slow_and_clear -- ~~ - navfn -- ~~ - global_planner -- ~~ - rotate_recovery -- ~~ - move_base -- ~~ - ydlidar -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- +++ processing catkin metapackage: 'geometry' -- ==> add_subdirectory(geometry/geometry) -- +++ processing catkin metapackage: 'geometry2' -- ==> add_subdirectory(geometry2/geometry2) -- +++ processing catkin metapackage: 'navigation' -- ==> add_subdirectory(navigation/navigation) -- +++ processing catkin package: 'eigen_conversions' -- ==> add_subdirectory(geometry/eigen_conversions) -- +++ processing catkin package: 'kdl_conversions' -- ==> add_subdirectory(geometry/kdl_conversions) -- +++ processing catkin package: 'tf2_msgs' -- ==> add_subdirectory(geometry2/tf2_msgs) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0") found components: thread -- Generating .msg files for action tf2_msgs/LookupTransform /home/haha/ucar_ws/src/geometry2/tf2_msgs/action/LookupTransform.action Generating for action LookupTransform -- tf2_msgs: 9 messages, 1 services -- +++ processing catkin package: 'tf2' -- ==> add_subdirectory(geometry2/tf2) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0") found components: system thread -- +++ processing catkin package: 'tf2_bullet' -- ==> add_subdirectory(geometry2/tf2_bullet) -- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") -- Checking for module 'bullet' -- Found bullet, version 2.88 -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'tf2_eigen' -- ==> add_subdirectory(geometry2/tf2_eigen) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'map_server' -- ==> add_subdirectory(navigation/map_server) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Found Bullet: /usr/lib/x86_64-linux-gnu/libBulletDynamics.so -- Found SDL: /usr/lib/x86_64-linux-gnu/libSDLmain.a;/usr/lib/x86_64-linux-gnu/libSDL.so;-lpthread (found version "1.2.15") -- Found SDL_image: /usr/lib/x86_64-linux-gnu/libSDL_image.so (found version "1.2.12") -- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0") found components: filesystem -- +++ processing catkin package: 'speech_command' -- ==> add_subdirectory(speech_command) -- +++ processing catkin package: 'tf2_py' -- ==> add_subdirectory(geometry2/tf2_py) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.8.so (found suitable version "3.8.10", minimum required is "2") -- +++ processing catkin package: 'tf' -- ==> add_subdirectory(geometry/tf) -- Performing Test COMPILER_SUPPORTS_CXX11 -- Performing Test COMPILER_SUPPORTS_CXX11 - Success -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0") found components: thread system -- tf: 1 messages, 1 services -- +++ processing catkin package: 'fdilink_ahrs' -- ==> add_subdirectory(fdilink_ahrs) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'tf2_geometry_msgs' -- ==> add_subdirectory(geometry2/tf2_geometry_msgs) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0") found components: thread -- +++ processing catkin package: 'amcl' -- ==> add_subdirectory(navigation/amcl) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0") -- Looking for unistd.h -- Looking for unistd.h - found -- Looking for drand48 -- Looking for drand48 - found -- +++ processing catkin package: 'fake_localization' -- ==> add_subdirectory(navigation/fake_localization) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'tf2_kdl' -- ==> add_subdirectory(geometry2/tf2_kdl) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'test_tf2' -- ==> add_subdirectory(geometry2/test_tf2) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0") found components: thread -- +++ processing catkin package: 'tf2_sensor_msgs' -- ==> add_subdirectory(geometry2/tf2_sensor_msgs) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'tf2_tools' -- ==> add_subdirectory(geometry2/tf2_tools) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'tf_conversions' -- ==> add_subdirectory(geometry/tf_conversions) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'ucar_camera' -- ==> add_subdirectory(ucar_camera) -- +++ processing catkin package: 'ucar_controller' -- ==> add_subdirectory(ucar_controller) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- ucar_controller: 0 messages, 6 services -- +++ processing catkin package: 'ucar_map' -- ==> add_subdirectory(ucar_map) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'ucar_nav' -- ==> add_subdirectory(ucar_nav) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'voxel_grid' -- ==> add_subdirectory(navigation/voxel_grid) -- Looking for sys/time.h -- Looking for sys/time.h - found -- +++ processing catkin package: 'costmap_2d' -- ==> add_subdirectory(navigation/costmap_2d) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0") found components: system thread -- costmap_2d: 1 messages, 0 services -- +++ processing catkin package: 'nav_core' -- ==> add_subdirectory(navigation/nav_core) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'base_local_planner' -- ==> add_subdirectory(navigation/base_local_planner) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0") found components: thread -- base_local_planner: 1 messages, 0 services -- +++ processing catkin package: 'carrot_planner' -- ==> add_subdirectory(navigation/carrot_planner) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'clear_costmap_recovery' -- ==> add_subdirectory(navigation/clear_costmap_recovery) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'dwa_local_planner' -- ==> add_subdirectory(navigation/dwa_local_planner) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'move_slow_and_clear' -- ==> add_subdirectory(navigation/move_slow_and_clear) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'navfn' -- ==> add_subdirectory(navigation/navfn) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- navfn: 0 messages, 2 services -- Looking for C++ include FL/Fl.H -- Looking for C++ include FL/Fl.H - found -- Looking for C++ include pgm.h -- Looking for C++ include pgm.h - not found -- NAVFN_HAVE_FLTK: 1, NETPBM: -- FLTK orf NETPBM not found: cannot build navtest -- +++ processing catkin package: 'global_planner' -- ==> add_subdirectory(navigation/global_planner) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'rotate_recovery' -- ==> add_subdirectory(navigation/rotate_recovery) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'move_base' -- ==> add_subdirectory(navigation/move_base) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'ydlidar' -- ==> add_subdirectory(ydlidar) -- Configuring done -- Generating done -- Build files have been written to: /home/haha/ucar_ws/build #### #### Running command: "make -j2 -l2" in "/home/haha/ucar_ws/build" #### Scanning dependencies of target std_msgs_generate_messages_py Scanning dependencies of target geometry_msgs_generate_messages_eus [ 0%] Built target std_msgs_generate_messages_py [ 0%] Built target geometry_msgs_generate_messages_eus Scanning dependencies of target geometry_msgs_generate_messages_cpp Scanning dependencies of target geometry_msgs_generate_messages_py [ 0%] Built target geometry_msgs_generate_messages_cpp [ 0%] Built target geometry_msgs_generate_messages_py Scanning dependencies of target geometry_msgs_generate_messages_nodejs Scanning dependencies of target std_msgs_generate_messages_cpp [ 0%] Built target geometry_msgs_generate_messages_nodejs [ 0%] Built target std_msgs_generate_messages_cpp Scanning dependencies of target geometry_msgs_generate_messages_lisp Scanning dependencies of target std_msgs_generate_messages_eus [ 0%] Built target geometry_msgs_generate_messages_lisp [ 0%] Built target std_msgs_generate_messages_eus Scanning dependencies of target std_msgs_generate_messages_lisp Scanning dependencies of target std_msgs_generate_messages_nodejs [ 0%] Built target std_msgs_generate_messages_lisp [ 0%] Built target std_msgs_generate_messages_nodejs Scanning dependencies of target _tf2_msgs_generate_messages_check_deps_LookupTransformGoal Scanning dependencies of target _tf2_msgs_generate_messages_check_deps_LookupTransformActionResult [ 0%] Built target _tf2_msgs_generate_messages_check_deps_LookupTransformActionResult [ 0%] Built target _tf2_msgs_generate_messages_check_deps_LookupTransformGoal Scanning dependencies of target _tf2_msgs_generate_messages_check_deps_TF2Error Scanning dependencies of target _tf2_msgs_generate_messages_check_deps_LookupTransformAction [ 0%] Built target _tf2_msgs_generate_messages_check_deps_TF2Error [ 0%] Built target _tf2_msgs_generate_messages_check_deps_LookupTransformAction Scanning dependencies of target _tf2_msgs_generate_messages_check_deps_TFMessage Scanning dependencies of target _tf2_msgs_generate_messages_check_deps_LookupTransformActionGoal [ 0%] Built target _tf2_msgs_generate_messages_check_deps_TFMessage Scanning dependencies of target actionlib_msgs_generate_messages_nodejs [ 0%] Built target _tf2_msgs_generate_messages_check_deps_LookupTransformActionGoal [ 0%] Built target actionlib_msgs_generate_messages_nodejs Scanning dependencies of target _tf2_msgs_generate_messages_check_deps_LookupTransformActionFeedback Scanning dependencies of target _tf2_msgs_generate_messages_check_deps_LookupTransformResult [ 0%] Built target _tf2_msgs_generate_messages_check_deps_LookupTransformActionFeedback [ 0%] Built target _tf2_msgs_generate_messages_check_deps_LookupTransformResult Scanning dependencies of target _tf2_msgs_generate_messages_check_deps_LookupTransformFeedback Scanning dependencies of target _tf2_msgs_generate_messages_check_deps_FrameGraph [ 0%] Built target _tf2_msgs_generate_messages_check_deps_LookupTransformFeedback [ 0%] Built target _tf2_msgs_generate_messages_check_deps_FrameGraph Scanning dependencies of target actionlib_msgs_generate_messages_py Scanning dependencies of target actionlib_msgs_generate_messages_lisp [ 0%] Built target actionlib_msgs_generate_messages_py [ 0%] Built target actionlib_msgs_generate_messages_lisp Scanning dependencies of target actionlib_msgs_generate_messages_cpp Scanning dependencies of target actionlib_msgs_generate_messages_eus [ 0%] Built target actionlib_msgs_generate_messages_cpp [ 0%] Built target actionlib_msgs_generate_messages_eus Scanning dependencies of target roscpp_generate_messages_cpp Scanning dependencies of target gtest [ 0%] Built target roscpp_generate_messages_cpp Scanning dependencies of target nav_msgs_generate_messages_lisp [ 0%] Built target nav_msgs_generate_messages_lisp Scanning dependencies of target nav_msgs_generate_messages_eus [ 1%] Building CXX object gtest/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o [ 1%] Built target nav_msgs_generate_messages_eus Scanning dependencies of target roscpp_generate_messages_lisp [ 1%] Built target roscpp_generate_messages_lisp Scanning dependencies of target nav_msgs_generate_messages_cpp [ 1%] Built target nav_msgs_generate_messages_cpp Scanning dependencies of target rosgraph_msgs_generate_messages_eus [ 1%] Built target rosgraph_msgs_generate_messages_eus Scanning dependencies of target rosgraph_msgs_generate_messages_cpp [ 1%] Built target rosgraph_msgs_generate_messages_cpp Scanning dependencies of target roscpp_generate_messages_nodejs [ 1%] Built target roscpp_generate_messages_nodejs Scanning dependencies of target roscpp_generate_messages_py [ 1%] Built target roscpp_generate_messages_py Scanning dependencies of target rosgraph_msgs_generate_messages_nodejs [ 1%] Built target rosgraph_msgs_generate_messages_nodejs Scanning dependencies of target roscpp_generate_messages_eus [ 1%] Built target roscpp_generate_messages_eus Scanning dependencies of target rosgraph_msgs_generate_messages_lisp [ 1%] Built target rosgraph_msgs_generate_messages_lisp Scanning dependencies of target nav_msgs_generate_messages_nodejs [ 1%] Built target nav_msgs_generate_messages_nodejs Scanning dependencies of target nav_msgs_generate_messages_py [ 1%] Built target nav_msgs_generate_messages_py Scanning dependencies of target rosgraph_msgs_generate_messages_py [ 1%] Built target rosgraph_msgs_generate_messages_py Scanning dependencies of target audio_recorder [ 1%] Building CXX object speech_command/CMakeFiles/audio_recorder.dir/src/AudioRecorder.cpp.o In file included from /home/haha/ucar_ws/src/speech_command/include/AudioRecorder.h:4, from /home/haha/ucar_ws/src/speech_command/src/AudioRecorder.cpp:1: /home/haha/ucar_ws/src/speech_command/include/hidapi.h:34:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 34 | char *device_index = "iflytek"; | ^~~~~~~~~ [ 2%] Linking CXX shared library /home/haha/ucar_ws/devel/lib/libaudio_recorder.so /usr/bin/ld: 当搜索用于 /home/haha/ucar_ws/src/speech_command/lib/arm64/libhid_lib.so 时跳过不兼容的 -lhid_lib /usr/bin/ld: 找不到 -lhid_lib /usr/bin/ld: 当搜索用于 /home/haha/ucar_ws/src/speech_command/lib/arm64/libmsc.so 时跳过不兼容的 -lmsc /usr/bin/ld: 找不到 -lmsc collect2: error: ld returned 1 exit status make[2]: *** [speech_command/CMakeFiles/audio_recorder.dir/build.make:84:/home/haha/ucar_ws/devel/lib/libaudio_recorder.so] 错误 1 make[1]: *** [CMakeFiles/Makefile2:4943:speech_command/CMakeFiles/audio_recorder.dir/all] 错误 2 make[1]: *** 正在等待未完成的任务.... [ 2%] Linking CXX shared library ../lib/libgtest.so [ 2%] Built target gtest make: *** [Makefile:141:all] 错误 2 Invoking "make -j2 -l2" failed 什么问题并给我一个详细的解决方法
07-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值