Image 无法从cpp代码运行图像_传输:`分段错误(堆芯转储)`

Image 无法从cpp代码运行图像_传输:`分段错误(堆芯转储)`,image,ubuntu,segmentation-fault,ros,catkin,Image,Ubuntu,Segmentation Fault,Ros,Catkin,我在CMake文件和packake.xml中都很好地包含了image\u transport。我在Ubuntu16上使用RosKineltic,不过在Ubuntu14上使用RosIndigo和jade时也遇到了同样的问题 我的CMake文件如下所示: find_package(catkin REQUIRED COMPONENTS cv_bridge image_transport roscpp rospy std_msgs message_generation gen

我在
CMake
文件和
packake.xml
中都很好地包含了
image\u transport
。我在Ubuntu16上使用RosKineltic,不过在Ubuntu14上使用RosIndigo和jade时也遇到了同样的问题

我的CMake文件如下所示:

find_package(catkin REQUIRED COMPONENTS
  cv_bridge
  image_transport
  roscpp
  rospy
  std_msgs
  message_generation
  genmsg
  )

generate_messages(
  DEPENDENCIES
  std_msgs
  )

catkin_package(
  CATKIN_DEPENDS  cv_bridge image_transport roscpp rospy std_msgs message_generation
  )
    include_directories(
   ${catkin_INCLUDE_DIRS}
   ) 
....
而我的
package.xml

<buildtool_depend>catkin</buildtool_depend>
 <build_depend>cv_bridge</build_depend>
  <build_depend>image_transport</build_depend>
  <build_depend>roscpp</build_depend>
 <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>
  <build_depend>message_generation</build_depend>
   <run_depend>cv_bridge</run_depend>
  <run_depend>image_transport</run_depend>
  <run_depend>roscpp</run_depend>
  <run_depend>rospy</run_depend>
 <run_depend>std_msgs</run_depend>
  <run_depend>message_runtime</run_depend>
 <run_depend>message_generation</run_depend>
    <run_depend>image_transport</run_depend>
柳絮
cv_桥
图像传输
roscpp
罗西
标准msgs
消息生成
cv_桥
图像传输
roscpp
罗西
标准msgs
消息运行时
消息生成
图像传输
在我的.cpp文件中

#include <ros/ros.h>
#include <image_transport/image_transport.h>
.....
int main(int argc, char **argv)
{

  ros::init(argc, argv, "imagegraber");
  ros::NodeHandle nodea;

 image_transport::ImageTransport it(nodea);

image_transport::Subscriber sub = it.subscribe("/pg_15508342/image_raw", 1, imageCallback);


 ros::spin();
return 0;
}
#包括
#包括
.....
int main(int argc,字符**argv)
{
ros::init(argc,argv,“图像捕捉器”);
ros::NodeHandle nodea;
图像传输:图像传输it(nodea);
image\u transport::Subscriber sub=it.subscribe(“/pg\u 15508342/image\u raw”,1,imageCallback);
ros::自旋();
返回0;
}
然而,当我运行代码时,我收到
分段错误(内核转储)
。。。。有什么问题吗?代码在
image\u transport::ImageTransport it(nodea)处崩溃


请注意,我可以使用命令行运行图像传输:
rosrun图像传输重新发布原始输入:=/pg\u 15508342/image\u原始输出:=/newim
。还可以运行
image\u view

我想我现在可以看到问题的根源了。这与来自外部ros的增压有关。 事实上,我应该在问题中报告我的完整CMakeLists.txt,但我最初根本不认为这个问题有任何关联

在我的CMakeLists.txt中,我包括了我自己的boost(从源代码下载的最新版本),如

因此,我在
image\u transport::ImageTransport it(nh)中得到了分割错误。但是,在将上述CMake代码替换为

FIND_PACKAGE(Boost)
我不再有那种分割错误了。我应该更加注意ros发出的警告信息,即ros的提升和我的独立提升之间的最终冲突

因此,另一个问题是,如何将独立的Boost与ROS柳絮一起使用

FIND_PACKAGE(Boost)