@小鱼 确实是依赖的问题,最后是在village_wang下的CMakeLists.txt中,加上了std_msgs的依赖,问题解决,谢谢小鱼老师
ament_target_dependencies(wang2_node rclcpp std_msgs)
@小鱼 确实是依赖的问题,最后是在village_wang下的CMakeLists.txt中,加上了std_msgs的依赖,问题解决,谢谢小鱼老师
ament_target_dependencies(wang2_node rclcpp std_msgs)
@小鱼 稍微排版了一下,实在是报错的内容太杂乱了,最后面的这一句貌似有提示,抱歉了
undefined reference to `rosidl_message_type_support_t const* rosidl_typesupport_cpp::get_message_type_support_handle<std_msgs::msg::UInt32_<std::allocator<void> > >()'
完全复制4.2.2教程上的代码至wang2.cpp,colcon build后只有village_wang报错(粘贴3.5中的基础内容不报错),错误内容如下:
Starting >>> village_li
Starting >>> village_wang
Finished <<< village_li [1.83s]
--- stderr: village_wang
CMakeFiles/wang2_node.dir/src/wang2.cpp.o: In function `rclcpp::create_subscription_factory<std_msgs::msg::String_<std::allocator<void> >, std::_Bind<void (SingleDogNode::*(SingleDogNode*, std::_Placeholder<1>))(std::shared_ptr<std_msgs::msg::String_<std::allocator<void> > >)>, std::allocator<void>, std_msgs::msg::String_<std::allocator<void> >, rclcpp::Subscription<std_msgs::msg::String_<std::allocator<void> >, std::allocator<void> > >(std::_Bind<void (SingleDogNode::*(SingleDogNode*, std::_Placeholder<1>))(std::shared_ptr<std_msgs::msg::String_<std::allocator<void> > >)>&&, rclcpp::SubscriptionEventCallbacks const&, rclcpp::message_memory_strategy::MessageMemoryStrategy<std_msgs::msg::String_<std::allocator<void> >, std::allocator<void> >::SharedPtr, std::shared_ptr<std::allocator<void> >)::{lambda(rclcpp::node_interfaces::NodeBaseInterface*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rcl_subscription_options_t const&)#1}::operator()(rclcpp::node_interfaces::NodeBaseInterface*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rcl_subscription_options_t const&) const':
wang2.cpp:(.text._ZZN6rclcpp27create_subscription_factoryIN8std_msgs3msg7String_ISaIvEEESt5_BindIFM13SingleDogNodeFvSt10shared_ptrIS5_EEPS7_St12_PlaceholderILi1EEEES4_S5_NS_12SubscriptionIS5_S4_EEEENS_19SubscriptionFactoryEOT0_RKNS_26SubscriptionEventCallbacksENS_23message_memory_strategy21MessageMemoryStrategyIT2_T1_E9SharedPtrES8_ISS_EENKUlPNS_15node_interfaces17NodeBaseInterfaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK26rcl_subscription_options_tE_clESY_S16_S19_[_ZZN6rclcpp27create_subscription_factoryIN8std_msgs3msg7String_ISaIvEEESt5_BindIFM13SingleDogNodeFvSt10shared_ptrIS5_EEPS7_St12_PlaceholderILi1EEEES4_S5_NS_12SubscriptionIS5_S4_EEEENS_19SubscriptionFactoryEOT0_RKNS_26SubscriptionEventCallbacksENS_23message_memory_strategy21MessageMemoryStrategyIT2_T1_E9SharedPtrES8_ISS_EENKUlPNS_15node_interfaces17NodeBaseInterfaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK26rcl_subscription_options_tE_clESY_S16_S19_]+0x16d): undefined reference to `rosidl_message_type_support_t const* rosidl_typesupport_cpp::get_message_type_support_handle<std_msgs::msg::String_<std::allocator<void> > >()'
CMakeFiles/wang2_node.dir/src/wang2.cpp.o: In function `rclcpp::Publisher<std_msgs::msg::UInt32_<std::allocator<void> >, std::allocator<void> >::Publisher(rclcpp::node_interfaces::NodeBaseInterface*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rcl_publisher_options_t const&, rclcpp::PublisherEventCallbacks const&, std::shared_ptr<std::allocator<std_msgs::msg::UInt32_<std::allocator<void> > > > const&)':
wang2.cpp:(.text._ZN6rclcpp9PublisherIN8std_msgs3msg7UInt32_ISaIvEEES4_EC2EPNS_15node_interfaces17NodeBaseInterfaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK23rcl_publisher_options_tRKNS_23PublisherEventCallbacksERKSt10shared_ptrISaIS5_EE[_ZN6rclcpp9PublisherIN8std_msgs3msg7UInt32_ISaIvEEES4_EC5EPNS_15node_interfaces17NodeBaseInterfaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK23rcl_publisher_options_tRKNS_23PublisherEventCallbacksERKSt10shared_ptrISaIS5_EE]+0x26): undefined reference to `rosidl_message_type_support_t const* rosidl_typesupport_cpp::get_message_type_support_handle<std_msgs::msg::UInt32_<std::allocator<void> > >()'
collect2: error: ld returned 1 exit status
make[2]: *** [wang2_node] Error 1
make[1]: *** [CMakeFiles/wang2_node.dir/all] Error 2
make: *** [all] Error 2
---
Failed <<< village_wang [5.55s, exited with code 2]
Summary: 1 package finished [5.73s]
1 package failed: village_wang
1 package had stderr output: village_wang