Модульный компьютер "x64" конфликтует с целевым компьютером "x86" - PullRequest
0 голосов
/ 03 мая 2020

Я проверил разные вопросы относительно конфликта x64 и x86, но ни один из них не применим к моему случаю: я создаю пакет с именем beginner_tutorials в моем catkin_ws. Внутри моей упаковки я ввожу несколько файлов в папку src. Затем при выполнении catkin_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_ws структура выглядит так:

catkin_ws
--build
--devel
--src
----CMakeLists
----beginner_tutorials
------msg
------src
------CMakeList
------package.xml

Моя CMakeLists внутри beginner_tutorials выглядит следующим образом:

# %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

1 Ответ

1 голос
/ 05 мая 2020

По какой-то причине catkin_make сгенерировал файлы сборки для архитектуры X86 (32-разрядной) Visual Studio (обратите внимание на параметр /machine:X86 и вызывается ...\bin\Hostx86\x86\link.exe), поэтому возникает конфликт ссылок с X64 (64-битные) библиотеки ROS.

Я не могу сказать вам, почему, но я могу дать вам несколько идей, где искать и, возможно, найти решение для себя.

  • Вы устанавливали версию Visual Studio для X64 и MSV C?
  • Следовали ли вы рекомендуемым процедурам ROS Windows руководство по установке ?
  • Вы могли попробуй форсировать сборку X64 с catkin_make --cmake-args -A X64, это поможет? Если нет, вы получаете другое сообщение об ошибке, указывающее на отсутствующий компилятор или компоновщик?

Хорошо выглядишь в поиске ошибок.

...