undefined-reference 相关问题

由于缺少程序中其他位置使用的符号定义而导致的链接器错误

对 `pcl::PCLBase<pcl::PCLPointCloud2>::setInputCloud(std::shared_ptr<pcl::PCLPointCloud2 const> const&)

我正在尝试使用 pcl 库的 VoxelGrid 来过滤从 ros 消息中提取的点云。那么下面是与这个问题相关的部分代码: pcl::PCLBase 我正在尝试使用 pcl 库的 VoxelGrid 来过滤从 ros 消息中提取的点云。所以以下是与这个问题相关的部分代码: pcl::PCLBase<pcl::PCLPointCloud2>::PCLPointCloud2ConstPtr cloudPtr(cloud_pc2); pcl::VoxelGrid<pcl::PCLPointCloud2> sor; sor.setInputCloud(cloudPtr); sor.setLeafSize(0.1f, 0.1f, 0.1f); sor.filter(cloud_filtered); 我看到了他们直接做的在线教程: pcl::PCLPointCloud2::Ptr cloud_filtered (new pcl::PCLPointCloud2 ()); pcl::VoxelGrid<pcl::PCLPointCloud2> sor; sor.setInputCloud (cloud); sor.setLeafSize (0.01f, 0.01f, 0.01f); sor.filter (*cloud_filtered); 但是在这两种情况下,我都得到了 setInputCloud 函数的未定义引用。有人知道为什么会发生这种情况吗?我还将附上我的 CmakeList 文件 cmake_minimum_required(VERSION 3.5) project(loam_os2) # Default to C99 if(NOT CMAKE_C_STANDARD) set(CMAKE_C_STANDARD 99) endif() # Default to C++14 if(NOT CMAKE_CXX_STANDARD) #set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD 17) endif() if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Wpedantic) endif() # find dependencies find_package(ament_cmake REQUIRED) find_package(rclcpp REQUIRED) find_package(std_msgs REQUIRED) find_package(sensor_msgs REQUIRED) find_package(PCL 1.10 REQUIRED) find_package(pcl_conversions REQUIRED) find_package(tf2_ros REQUIRED) find_package(tf2 REQUIRED) include_directories(${PCL_INCLUDE_DIRS} include) link_directories(${PCL_LIBRARY_DIRS}) add_definitions(${PCL_DEFINITIONS}) add_executable(pcl_example_node src/pcl_example.cpp src/pcl_example_node.cpp) target_link_libraries( pcl_example_node ${PCL_LIBRARIES} ) ament_target_dependencies( pcl_example_node rclcpp std_msgs sensor_msgs pcl_conversions tf2 tf2_ros ) install(TARGETS pcl_example_node DESTINATION lib/${PROJECT_NAME}) # Install launch files. install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}/ ) if(BUILD_TESTING) find_package(ament_lint_auto REQUIRED) # the following line skips the linter which checks for copyrights # uncomment the line when a copyright and license is not present in all source files #set(ament_cmake_copyright_FOUND TRUE) # the following line skips cpplint (only works in a git repo) # uncomment the line when this package is not in a git repo #set(ament_cmake_cpplint_FOUND TRUE) ament_lint_auto_find_test_dependencies() endif() ament_package() 提前感谢您的任何建议 这里是完整的错误: usr/bin/ld: CMakeFiles/pcl_example_node.dir/src/pcl_example.cpp.o: in function Pcl_example::lidar_callback(std::shared_ptr<sensor_msgs::msg::PointCloud2_<std::allocator<void> > >)': pcl_example.cpp:(.text+0x122f): undefined reference topcl::PCLBase<pcl::PCLPointCloud2>::setInputCloud(std::shared_ptr<pcl::PCLPointCloud2 const> const&)' collect2: error: ld returned 1 exit status make[2]: * [CMakeFiles/pcl_example_node.dir/build.make:360: pcl_example_node] Error 1 make[1]: * [CMakeFiles/Makefile2:78: CMakeFiles/pcl_example_node.dir/all] Error 2 make: *** [Makefile:141: all] Error 2 Failed <<< loam_os2 [12.2s, exited with code 2] Summary: 0 packages finished [12.5s] 1 package failed: loam_os2 1 package had stderr output: loam_os2 从版本 1.11.0 开始,PCL 使用 std::shared_ptr 而不是 boost::shared_ptr。您似乎使用的是 PCL 1.10,因此 setInputCloud 会期望得到 boost::shared_ptr,但是您正在传递 std::shared_ptr。由于我看不到 cloudPtr 或 cloud 分别来自您的代码片段中的位置,因此除了使用较新的 PCL 版本之外,我无法提出解决方案。

回答 1 投票 0

VTK项目报告“未定义的引用”错误

我想在Centos7.9-2009上运行一个简单的VTK8.1.2演示来测试我的项目的VTK包。这是演示: #包括 #包括 #包括<

回答 1 投票 0

“未定义引用”函数错误

我遇到了一个非常令人沮丧的错误,我已经为此苦苦挣扎了一段时间了。 在我开始将数据类型从 int 更改为使用模板之前,我的程序运行良好。这是

回答 4 投票 0

用C编写GObject类时需要自己实现“new”方法吗?

我正在尝试按照 GObject 教程来实现我的第一个 GObject 类。到目前为止,我已经想出了这段代码: 火车.h: #pragma 一次 #包括 G_BEGIN_DECLS #定义

回答 1 投票 0

c++ 中未定义的引用编译器错误

当我尝试编译代码时收到以下错误消息 - 功能中 '__static_initialization_and_destruction_0': home/user/main.cpp:50: 未定义 参考 'PhysEng2D::

回答 3 投票 0

使用 vcpkg 将 Google Benchmark 与 Windows (MSYS2) 上的 g++ 链接时出现未定义的引用

我正在尝试在 Windows 上使用 Google Benchmark 和 g++ 编译器。我使用 vcpkg 包管理器和三元组 x64-mingw-static 安装了该库。 这是我用来安装的命令...

回答 2 投票 0

.cu 和 .cpp 文件之间共享 CUDA Thrust 对象

似乎最近对 Thrust(CUDA Toolkit 的一部分)进行了更改,以使用编译时 CUDA 架构来标记 host_vector 类名。当我...

回答 1 投票 0

在 C++ 程序上使用 mpicc 链接失败

我运行的是 Ubuntu 11.04 64 位。 我已经安装了 OpenMPI。 我正在尝试构建以下代码,这是 Gropp/Lusk/Skjellum 所著的“Using MPI”一书中测试问题的片段: #包括...

回答 2 投票 0

GLFW:对“glfwInit”的未定义引用

我只是想通过 GLFW 让 OpenGL 在我的机器(Windows 7 64 位)上工作。 我收到单一链接器错误: 对“glfwInit”的未定义引用。 我试图编译的代码是

回答 5 投票 0

未定义对 SDL_init 的引用?

我正在尝试编译这段代码: #include“SDL/SDL.h” int 主函数(无效){ SDL_Surface *Hello = NULL; SDL_Surface *屏幕= NULL; SDL_Init( SDL_INIT_EVERYTHING ); 返回 0...

回答 2 投票 0

在缓存的gems中或本地安装时找不到packetfu-2.0.0、pcaprub-0.13.3

大家好,我是 ruby 新手,我正在使用 rubyMine 2024.2.3 和 rubyinstaller-devkit-3.2.5-1-x64_2 我一直在尝试使用终端运行命令,这是显示的错误消息 凑...

回答 1 投票 0

对构建 SFML 的 `_setjmp' 的未定义引用

我正在为 MinGW 构建 SFML,如官方教程中所述。我正在使用 WinLibs 的最新 MinGW,适用于 64x 系统。我完全按照教程进行操作,使用来自 GitHub 的 SFML 2.6,...

回答 1 投票 0

C 中对 glutX 的未定义引用

在以下 C 代码中,该代码在教程中完美运行,返回: 01.c:(.text+0x25): 对 `glutInit' 的未定义引用 /sbin/ld: 01.c:(.text+0x34): 对 `

回答 1 投票 0

尝试在 CMake 项目中使用 Boost Multi precision 时,未定义对 mpfr_*() 函数的引用?

我想在我的 C++ 项目中使用 Boost Multi precision,但我无法做到。我怀疑我没有在根 CMakeLists.txt 配置中添加正确的依赖项,其相关部分看起来...

回答 1 投票 0

手动编译可以,但不能使用带有 SDL 的 Makefile

我的 makefile 遇到问题。当我尝试使用 Makefile 编译项目时,它不起作用。但如果用手操作的话,效果非常好。我不明白为什么,我需要帮助 这是我的 makefil...

回答 1 投票 0

对 ruserok 错误的未定义引用

我遇到了一个奇怪的“未定义引用”编译错误,我似乎找不到解决方案。 我正在尝试使用 Yocto 项目为我的 Gumstix Overo 配置/编译 PAM 1.1.6

回答 1 投票 0

未定义对 gluBuild2DMipmaps() 的引用?

其他信息: #包括 #包括 我可以用 dev++ 编译一个普通的 opengl 程序(旋转三角形),但是如果我想使用函数 gluBuild2DMipm...

回答 1 投票 0

C++ OpenGL --- 函数 gluBuild2DMipmaps 出现链接器错误

其他信息: #包括 #包括 嘿,我遇到了一个非常简单但毁灭灵魂的问题: 我可以编译一个普通的 opengl 程序(旋转三角形)...

回答 1 投票 0

尝试链接到 Cmake 中的静态预构建库 Noesis 时出现未定义的引用(c++、CLion、Windows)

我正在尝试在我的游戏中开始使用 GUI 库 Noesis,目前正在将其集成到我的项目中。不幸的是,在链接过程中,我拥有的所有 Noesis 函数......

回答 1 投票 0

std::pair 构造中未定义符号到静态常量成员变量

填充 int 对的无序映射时,使用静态 const 类成员创建 std::pair 对象似乎会导致未定义符号错误,但仅限于 std::pair 构造函数调用中。如果我

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.