C++ 模块机';x64和x27;与目标机器冲突';x86和x27;

C++ 模块机';x64和x27;与目标机器冲突';x86和x27;,c++,windows,ros,catkin,C++,Windows,Ros,Catkin,我检查了关于x64和x86冲突的不同问题,但没有一个适用于我的案例: 我正在我的catkin\u ws中创建一个名为初学者教程的包。在我的包中,我介绍了src文件夹中的几个文件。然后,当执行catkin\u make时,我得到以下结果: LINK Pass 1: command "C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1425~1.286\bin\Hostx86\x86\link.exe /nologo @CMakeFiles\list

我检查了关于x64和x86冲突的不同问题,但没有一个适用于我的案例: 我正在我的
catkin\u ws
中创建一个名为
初学者教程
的包。在我的包中,我介绍了
src
文件夹中的几个文件。然后,当执行
catkin\u make
时,我得到以下结果:

LINK Pass 1: command "C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1425~1.286\bin\Hostx86\x86\link.exe /nologo @CMakeFiles\listener.dir\objects1.rsp /out:C:\Users\Hector\Desktop\Projects\ROSProject\catkin_ws\devel\lib\beginner_tutorials\listener.exe /implib:C:\Users\Hector\Desktop\Projects\ROSProject\catkin_ws\devel\lib\listener.lib /pdb:C:\Users\Hector\Desktop\Projects\ROSProject\catkin_ws\devel\lib\beginner_tutorials\listener.pdb /version:0.0 /machine:X86 /debug /INCREMENTAL /subsystem:console C:\opt\ros\melodic\x64\lib\roscpp.lib C:\opt\rosdeps\x64\lib\boost_filesystem-vc141-mt-x64-1_66.lib C:\opt\ros\melodic\x64\lib\rosconsole.lib C:\opt\ros\melodic\x64\lib\rosconsole_log4cxx.lib C:\opt\ros\melodic\x64\lib\rosconsole_backend_interface.lib C:\opt\rosdeps\x64\lib\log4cxx.lib C:\opt\rosdeps\x64\lib\boost_regex-vc141-mt-x64-1_66.lib C:\opt\ros\melodic\x64\lib\xmlrpcpp.lib C:\opt\ros\melodic\x64\lib\roscpp_serialization.lib C:\opt\ros\melodic\x64\lib\rostime.lib C:\opt\ros\melodic\x64\lib\cpp_common.lib C:\opt\rosdeps\x64\lib\boost_system-vc141-mt-x64-1_66.lib C:\opt\rosdeps\x64\lib\boost_thread-vc141-mt-x64-1_66.lib C:\opt\rosdeps\x64\lib\boost_chrono-vc141-mt-x64-1_66.lib C:\opt\rosdeps\x64\lib\boost_date_time-vc141-mt-x64-1_66.lib C:\opt\rosdeps\x64\lib\boost_atomic-vc141-mt-x64-1_66.lib C:\opt\rosdeps\x64\lib\console_bridge.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:CMakeFiles\listener.dir/intermediate.manifest CMakeFiles\listener.dir/manifest.res" failed (exit code 1112) with the following output:
我的
catkin\u ws
结构看起来像:

catkin_ws
--build
--devel
--src
----CMakeLists
----beginner_tutorials
------msg
------src
------CMakeList
------package.xml
# %Tag(FULLTEXT)%
cmake_minimum_required(VERSION 2.8.3)
project(beginner_tutorials)

## Find catkin and any catkin packages
find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs message_generation)

## Declare ROS messages and services
add_message_files(DIRECTORY msg FILES Num.msg)

## Generate added messages and services
generate_messages(DEPENDENCIES std_msgs)

## Declare a catkin package
catkin_package()

include_directories(${catkin_INCLUDE_DIRS})

# %EndTag(FULLTEXT)%
add_executable(talker src/talker.cpp)
target_link_libraries(talker ${catkin_LIBRARIES})
add_executable(points_and_lines src/print_points.cpp)
target_link_libraries(points_and_lines ${catkin_LIBRARIES})
add_dependencies(talker beginner_tutorials_generate_messages_cpp)

add_executable(listener src/listener.cpp)
target_link_libraries(listener ${catkin_LIBRARIES})
add_dependencies(listener beginner_tutorials_generate_messages_cpp)
我的
CMakeLists
初学者教程
看起来像:

catkin_ws
--build
--devel
--src
----CMakeLists
----beginner_tutorials
------msg
------src
------CMakeList
------package.xml
# %Tag(FULLTEXT)%
cmake_minimum_required(VERSION 2.8.3)
project(beginner_tutorials)

## Find catkin and any catkin packages
find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs message_generation)

## Declare ROS messages and services
add_message_files(DIRECTORY msg FILES Num.msg)

## Generate added messages and services
generate_messages(DEPENDENCIES std_msgs)

## Declare a catkin package
catkin_package()

include_directories(${catkin_INCLUDE_DIRS})

# %EndTag(FULLTEXT)%
add_executable(talker src/talker.cpp)
target_link_libraries(talker ${catkin_LIBRARIES})
add_executable(points_and_lines src/print_points.cpp)
target_link_libraries(points_and_lines ${catkin_LIBRARIES})
add_dependencies(talker beginner_tutorials_generate_messages_cpp)

add_executable(listener src/listener.cpp)
target_link_libraries(listener ${catkin_LIBRARIES})
add_dependencies(listener beginner_tutorials_generate_messages_cpp)

我看不出在哪里可以设置有关
x86

的任何内容,因为某种原因,
catkin\u make
为Visual Studio的x86(32位)体系结构生成了构建文件(请注意
/machine:x86
选项,并且调用了
..\bin\Hostx86\x86\link.exe
),这就是为什么会与X64发生链接冲突的原因(64位)ROS库

我不能告诉你为什么,但我可以给你一些想法,在哪里寻找,也许可以找到自己的解决办法

  • 您是否安装了VisualStudio和MSVC的X64版本
  • 您是否遵循了建议的程序
  • 您可以尝试使用catkin_make--cmake args-a X64
强制生成X64版本,这样有帮助吗?如果没有,是否会收到指向缺少编译器或链接器的其他错误消息 你找虫子的时候很好看