2012-04-26 2 views
4

Я пытаюсь выполнить следующий PCL простой пример просмотра из http://pointclouds.org/documentation/tutorials/pcl_visualizer.php я успешно построил бинарное дерево с помощью CMake и рекомендуемое CMakeLists.txtОблако точек Библиотека Simple Error Пример Ссылка

После генерации, когда я пытаюсь построить его, я получаю следующее сообщение об ошибке:

error LNK2019: unresolved external symbol "public: void __thiscall pcl::visualization::PCLVisualizer::initCameraParameters(void)" ([email protected]@[email protected]@@QAEXXZ) referenced in function "class boost::shared_ptr<class pcl::visualization::PCLVisualizer> __cdecl simpleVis(class boost::shared_ptr<class pcl::PointCloud<struct pcl::PointXYZ> const >)" ([email protected]@[email protected]@[email protected]@@@[email protected]@[email protected][email protected]@[email protected]@@[email protected]@@[email protected]@Z)` 

error LNK2019: unresolved external symbol "public: void __thiscall pcl::visualization::PCLVisualizer::addCoordinateSystem(double,int)" ([email protected]@[email protected]@@[email protected]) referenced in function "class boost::shared_ptr<class pcl::visualization::PCLVisualizer> __cdecl simpleVis(class boost::shared_ptr<class pcl::PointCloud<struct pcl::PointXYZ> const >)" ([email protected]@[email protected]@[email protected]@@@[email protected]@[email protected][email protected]@[email protected]@@[email protected]@@[email protected]@Z) 


error LNK2019: unresolved external symbol "public: bool __thiscall pcl::visualization::PCLVisualizer::setPointCloudRenderingProperties(int,double,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int)" ([email protected]@[email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]) referenced in function "class boost::shared_ptr<class pcl::visualization::PCLVisualizer> __cdecl simpleVis(class boost::shared_ptr<class pcl::PointCloud<struct pcl::PointXYZ> const >)" ([email protected]@[email protected]@[email protected]@@@[email protected]@[email protected][email protected]@[email protected]@@[email protected]@@[email protected]@Z) 

И это лишь некоторые из них ... я пропускаю что-то в CMakeLists.txt?

cmake_minimum_required(VERSION 2.6 FATAL_ERROR) 

project(pcl_visualizer_viewports) 

find_package(PCL 1.5.1 REQUIRED) 

include_directories(${PCL_INCLUDE_DIRS}) 

link_directories(${PCL_LIBRARY_DIRS}) 

add_definitions(${PCL_DEFINITIONS}) 

add_executable (pcl_visualizer_demo pcl_visualizer_demo.cpp) 

target_link_libraries (pcl_visualizer_demo ${PCL_LIBRARIES}) 

Любая помощь приветствуется. Спасибо

+0

UH! Что сейчас произошло?!?Это один уродливый, плохо отформатированный вопрос. – karlphillip

+0

Спасибо, что указали, что ... надеюсь, что это лучше сейчас :) – valentin

+0

Хорошо, я удалил голос. Я предлагаю вам перейти к предыдущей версии и повторить попытку. Я не вижу никакой ошибки в вашей стороне с информацией, которую вы нам показали. – karlphillip

ответ

3

Обнаружена проблема: хотя я использую 64-битную машину, мой компилятор (VS2010) настроен на 32 бит, поэтому мне нужно было удалить 64-битную облачную библиотеку точек и установить 32-разрядную версию. Теперь это работает. Извлеченный урок: D

+0

) Компилятор может использоваться для 32 или 64 бит. Реальная разница в том, что вам нужно установить генератор CMake на «Visual Studio 10 Win64», а не просто на Visual Studio 10. Это даст вам sln с 64-битной настройкой. Или просто скачайте 32-битные библиотеки, любой подход будет работать. :) – tfinniga

+0

Я использую VS 2017, а также 32-разрядный исполняемый файл pcl, загруженный с http://unanancyowen.com/en/pcl18/. Я получаю успешный файл .sln из компиляции cmake. Однако при создании .sln в VS 2017 я получаю неразрешенные ошибки связывания. В чем причина? Подробности также опубликованы здесь - https: //stackoverflow.com/questions/45300979/viewing-3d-point-cloud-by-integrating-custom-c-api-with-generic-point-cloud-view –

0

Похоже, вы не связываете библиотеки PCL. Это может быть связано с тем, что ${PCL_LIBRARIES} не установлен надлежащим образом при запуске CMake. Вы можете добавить

message("PCL_LIBRARIES - ${PCL_LIBRARIES}") 

в файл CMakeLists.txt после find_package вызова для проверки значения.

Если вы используете CMake v2.8.8, this bug может быть причиной ваших проблем. Попробуйте вернуться к v2.8.7.

+0

Спасибо за ваш ответ. Похоже, что он связывает все библиотеки PCL (даже сторонние). Я добавил вашу строку в cmakelists.txt и проверил это. Я уже использовал Cmake 2.8.7, поэтому попробовал обновить до 2.8.8 без везения. Я получаю те же ошибки независимо от используемой версии cmake: (( – valentin

0

Я думаю, что так сложно найти ошибку таким образом. Я установил PCL на своем компьютере, 64-разрядные версии Windows 7 и VStudio 2010, образцы работают нормально.

Убедитесь, что вы правильно установили свой PCL и зависимости. Пожалуйста, посмотрите в разделе загрузки here В моем случае я загрузил версию «все в одном».

Следуйте инструкциям, шаг за шагом, не очень сложно.

После вы можете увидеть, как структурирована «Cmake файл» here Попробуйте загрузить последнюю версию CMake

И, наконец, запустить основные проекты на сайте PCL here

Хорошего дня

0

У меня также была такая же проблема, и я решил вручную связать файл pcl_visualization.lib. можно попробовать следующие шаги в Visual C++ 2010:

Project Properties -> Linker -> Input -> Дополнительные зависимости -> Добавить файл.

В моем случае, я добавил G: \ PCL \ PCL 1.6.0 \ Lib \ pcl_visualization_release.lib для выпуска и G: \ PCL \ PCL 1.6.0 \ Lib \ pcl_visualization_debug.lib для отлаживать.

Это сработало для меня.

Смежные вопросы