Link-Error LNK2020 и 2001 Visual C ++ в VS2012 с библиотеками PCL

Я пытаюсь использовать библиотеку Open Point Cloud для выравнивания облаков точек. Я использую Visual Studio 2012 и создал новый проект Visual c ++. Каталог, в котором хранятся все библиотеки .lib PCL, добавляется в свойствах проекта (Свойства -> c / c ++ -> общий-> дополнительный каталог include). Библиотеки, которые я хочу использовать, перечислены в Свойства -> компоновщик -> Ввод -> дополнительные зависимости

Код, который я написал до сих пор, очень прост:

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/point_cloud.h>

int main(int argc, char** argv)
{
    //creates a PointCloud<PointXYZ> boost shared pointer and initializes it
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_src (new pcl::PointCloud<pcl::PointXYZ>); 
    //load Pointsclouds from PCD-Files       
    pcl::io::loadPCDFile<pcl::PointXYZ> ("pcd_ascii.pcd", *cloud_src); // <- at this point the error occurs
}

Я просто следил за этим руководством: http://pointclouds.org/documentation/tutorials/reading_pcd.php

Я включил нужные библиотеки и файлы… особенно pcd_io.h, почему я получаю ошибку компоновщика? Файл pcd, который я хочу загрузить, находится в той же папке, что и файл cpp. Я неправильно обращаюсь с библиотеками?

Link-Errors Ошибка Fehler 28 LNK2020: Nicht aufgel ÷ stes Token (0A000C90) "void __cdecl pcl :: console :: print (enum pcl :: console :: VERBOSITY_LEVEL, char const *, ...)" (? Print @ консоль @ pcl @@ $$ FYAXW4VERBOSITY_LEVEL @ 12 @ PBDZZ). D: \ Documents \ \ Code \ PCL_cpp \ pcl_cpp \ pcl_cpp \ pcl_registration.obj pcl_cpp

Ошибка Fehler 29 LNK2020: Nicht aufgel ÷ stes Token (0A000CBD) "void __cdecl pcl :: console :: print (enum pcl :: console :: VERBOSITY_LEVEL, char const *, ...)" (? Print @ console @ pcl @ @ $$ FYAXW4VERBOSITY_LEVEL @ 12 @ PBDZZ). D: \ Documents \ Code \ PCL_cpp \ pcl_cpp \ pcl_cpp \ pcl_registration.obj pcl_cpp

Ошибка Fehler 30 LNK2001: Nicht aufgel ÷ stes externes Symbol "" public: virtual int __thiscall pcl :: PCDReader :: readHeader (class std :: basic_string, class std :: allocator> const &, struct sensor_msgs :: PointCloud2 &, class Eigen :: Matrix &, class Eigen :: Quaternion &, int &, int &, unsigned int &, int) "(? ReadHeader @ PCDReader @ pcl @@ UAEHABV? $ Basic_string @ DU? $ Char_traits @ D @ std @@ V ? $ allocator @ D @ 2 @@ std @@ AAUPointCloud2 @ sensor_msgs @@ AAV? $ Matrix @ M $ 03 $ 00 $ 0A @ $ 03 $ 00 @ Eigen @@ AAV? $ Quaternion @ M $ 0A @@ 8 @ AAH4AAIH @ Z) ". D: \ Documents \ Code \ PCL_cpp \ pcl_cpp \ pcl_cpp \ pcl_registration.obj pcl_cpp

Ошибка Fehler 31 LNK2001: Nicht aufgel ÷ stes externes Symbol "" public: virtual int __thiscall pcl :: PCDReader :: read (class std :: basic_string, class std :: allocator> const &, struct sensor_msgs :: PointCloud2 &, class Eigen :: Matrix &, class Eigen :: Quaternion &, int &, int) "(? Read @ PCDReader @ pcl @@ UAEHABV? $ Basic_string @ DU? $ Char_traits @ D @ std @@ V? $ Allocator @ D @ 2 @@ std @@ AAUPointCloud2 @ sensor_msgs @@ AAV? $ Matrix @ M $ 03 $ 00 $ 0A @ $ 03 $ 00 @ Eigen @@ AAV? $ Quaternion @ M $ 0A @@ 8 @ AAHH @ Z) ". D: \ Documents \ Code \ PCL_cpp \ pcl_cpp \ pcl_cpp \ pcl_registration.obj pcl_cpp

Ошибка Fehler 32 LNK2001: Nicht aufgel ÷ stes externes Symbol "" void __cdecl pcl :: console :: print (enum pcl :: console :: VERBOSITY_LEVEL, char const *, ...) "(? Print @ console @ pcl @@ $$ FYAXW4VERBOSITY_LEVEL @ 12 @ PBDZZ) ". D: \ Documents \ Code \ PCL_cpp \ pcl_cpp \ pcl_cpp \ pcl_registration.obj pcl_cpp

Ошибки на немецком языке "Nicht aufgelöstes" означает нерешенные На вашем комментарии относительно правильной установки ... я не был уверен, поэтому я загрузил и установил его снова. это полный установщик для 64-битной «Windows MSVC 2010 (64-битная)». После установки я получаю те же результаты.


person Chris Mierke    schedule 02.01.2013    source источник
comment
Вы используете правильную установку PCL для вашей архитектуры (x86 / x64)?   -  person Benjamin Trent    schedule 03.01.2013
comment
Не заставляйте нас угадывать ошибки компоновщика. Они должны были помочь диагностировать проблему. Мы не сможем этого сделать, если не увидим их.   -  person Hans Passant    schedule 03.01.2013
comment
Извините, я забыл добавить их в описание. Спасибо за быстрый ответ   -  person Chris Mierke    schedule 03.01.2013
comment
Папка файлов заголовков PCL должна быть включена в (Свойства- ›Каталоги VC ++-› Включить каталоги), а папка с файлами библиотеки должна быть включена в (Свойства- ›Каталоги VC ++-› Каталоги библиотек). Вы это уже делаете? Это не очень понятно из вашего описания.   -  person Sassa    schedule 03.01.2013
comment
Спасибо! Ваш последний совет - ›Свойства -› VC решила ошибку компоновщика   -  person Chris Mierke    schedule 09.01.2013


Ответы (1)


Сначала убедитесь, что все ваши компиляторы и библиотеки имеют одинаковую 32-битную или 64-битную версию.

Вам необходимо связать эти библиотеки извне:

/LIBPATH:"C:\Program Files (x86)\PCL 1.6.0\lib" "pcl_common_debug.lib" "pcl_io_debug.lib"     pcl_common_release.lib" "pcl_features_release.lib" 

вы можете добавить эту строку в свой:

project>properties>commandline
person NKN    schedule 22.04.2013