我正在尝试在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 版本的开发人员命令提示符生成的。有人可以帮助我吗?
对于 Windows 构建,导出符号很重要。
这里有关于如何为 ROS 2 执行此操作的文档:
对于像
error LNK2019: unresolved external symbol
这样的错误,如果您已完成上述大部分操作,则可能意味着您未能像这样添加 <PACKAGENAME>_PUBLIC
导出 https://github.com/ros2/geometry2/pull/646/commits /10dc05c53406455619dd5f2dfd668dcab5cac881
*/
TF2_PUBLIC // <<--- Missing
geometry_msgs::msg::VelocityStamped lookupVelocity(