Error LNK2019链接错误catkin_make windows

问题描述 投票:0回答:1

我正在尝试在Windows中编译ROS包。我按照此处描述的步骤设置 ROS 环境 http://wiki.ros.org/Installation/Windows 。我想编译一个经过测试并在 Linux 中的 ROS 上运行的 ROS 包。该包必须使用使用 Visual Studio 2019 编译的静态库 (.lib)。我在 My CMakeList.txt 中添加依赖项,如下所示:

add_library(name STATIC IMPORTED)
set_property(TARGET name PROPERTY IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/api/lib/name_of_lib.lib)
target_link_library(node_name 
                    PUBLIC 
                    ${catkin_LIBRARIES} 
                    name)

从 Visual Studio shell 运行命令 catkin_make 后,我收到了 .lib 文件中定义的函数的错误 LNK2019。错误是: “CMakeFiles.....\manifest.res 失败(退出代码 1120),输出如下:communication_handler.cpp.obj:error LNK2019: 无法解析的外部符号 .....“

.lib 文件是在同一台计算机上使用相同的 VisualStudio 版本的开发人员命令提示符生成的。有人可以帮助我吗?

cmake visual-studio-2019 ros lnk2019
1个回答
0
投票

对于 Windows 构建,导出符号很重要。

这里有关于如何为 ROS 2 执行此操作的文档:

https://docs.ros.org/en/rolling/The-ROS2-Project/Contributing/Windows-Tips-and-Tricks.html#symbol-visibility

对于像

error LNK2019: unresolved external symbol
这样的错误,如果您已完成上述大部分操作,则可能意味着您未能像这样添加
<PACKAGENAME>_PUBLIC
导出 https://github.com/ros2/geometry2/pull/646/commits /10dc05c53406455619dd5f2dfd668dcab5cac881

   */
  TF2_PUBLIC // <<--- Missing
  geometry_msgs::msg::VelocityStamped lookupVelocity(
© www.soinside.com 2019 - 2024. All rights reserved.