# Fehler: lnk2019 mit C++, PCL & Cmake



## TinTin-_- (4. Oktober 2013)

Hallo,

ich hab mithilfe Cmake mein Projekt erstellt und versucht mit VS2008 Debuggen um zu schauen ob alles richtig war leider bekomm ich den error LNK2019: Verweis auf nicht aufgelöstes externes Symbol. Wenn ichs richtig verstanden kommt das durch falsche bzw. nicht vorhanden Verweise von .libs.

Leider bin ich mir nicht sicher welche es sind da die die es theoretisch sein müssten vorhanden sind. So langsam bin ich mit meinem Latein am ende und auch Prof. Google hat zwar vieles aber nichts bei mir zutreffendes zu sagen.

Danke schonmal für Eure Hilfe.

P.S: Denn Code hab ich nicht selbstgeschrieben hab ihn mir aus folgendem Tutorial gezogen
http://www.cse.buffalo.edu/~jryde/cse673/files/pcl_tutorial.pdf

Hier die CMakeLists.txt
Code:

```
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(PointCloudTest)
find_package(PCL 1.3 REQUIRED COMPONENTS common io)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(PCLTest main.cpp)
target_link_libraries(PCLTest ${PCL_COMMON_LIBRARIES} ${PCL_IO_LIBRARIES})
```


Hier der C++ Code


```
#include<pcl/io/pcd_io.h>
#include<pcl/point_types.h>
#include<pcl/io/io.h>
 
int main(int argc,char** argv)
{
pcl::PointCloud<pcl::PointXYZ> cloud;
//Fill in the clouddata
cloud.width=50;
cloud.height=1;
cloud.is_dense=false;
cloud.points.resize(cloud.width*cloud.height);
for(size_t i=0;i<cloud.points.size();++i)
{
cloud.points[i].x=1024*rand()/(RAND_MAX+1.0f);
cloud.points[i].y=1024*rand()/(RAND_MAX+1.0f);
cloud.points[i].z=1024*rand()/(RAND_MAX+1.0f);
}
pcl::io::savePCDFileASCII("testpcd.pcd",cloud);    //Zeile verantwortlich für den Fehler
return(0);
}
```


----------



## Der Wolf (4. Oktober 2013)

Hallo,

es wäre noch hilfreich die genaue Fehlermeldung zu kennen. Normalerweise enthält die Fehlermeldung ja auch das Symbol, welches nicht aufgelöst werden konnte.

Gruß,
Wolf


----------



## vfl_freak (7. Oktober 2013)

Moin,

hier mal ein paar Ansätze:
https://www.google.de/#q=lnk2019+unresolved+external+symbol

Gruß
Klaus


----------



## TinTin-_- (7. Oktober 2013)

Fehlermeldung sind diese sind 3 an der Zahl

Nr.1

```
Fehler	1	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: int __thiscall pcl::PCDWriter::writeASCII(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct sensor_msgs::PointCloud2 const &,class Eigen::Matrix<float,4,1,0,4,1> const &,class Eigen::Quaternion<float,0> const &,int)" (?writeASCII@PCDWriter@pcl@@QAEHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABUPointCloud2@sensor_msgs@@ABV?$Matrix@M$03$00$0A@$03$00@Eigen@@ABV?$Quaternion@M$0A@@8@H@Z)" in Funktion ""public: virtual int __thiscall pcl::PCDWriter::write(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct sensor_msgs::PointCloud2 const &,class Eigen::Matrix<float,4,1,0,4,1> const &,class Eigen::Quaternion<float,0> const &,bool)" (?write@PCDWriter@pcl@@UAEHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABUPointCloud2@sensor_msgs@@ABV?$Matrix@M$03$00$0A@$03$00@Eigen@@ABV?$Quaternion@M$0A@@8@_N@Z)".	main.obj
```

Nr.2 

```
Fehler	2	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: int __thiscall pcl::PCDWriter::writeBinary(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct sensor_msgs::PointCloud2 const &,class Eigen::Matrix<float,4,1,0,4,1> const &,class Eigen::Quaternion<float,0> const &)" (?writeBinary@PCDWriter@pcl@@QAEHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABUPointCloud2@sensor_msgs@@ABV?$Matrix@M$03$00$0A@$03$00@Eigen@@ABV?$Quaternion@M$0A@@8@@Z)" in Funktion ""public: virtual int __thiscall pcl::PCDWriter::write(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct sensor_msgs::PointCloud2 const &,class Eigen::Matrix<float,4,1,0,4,1> const &,class Eigen::Quaternion<float,0> const &,bool)" (?write@PCDWriter@pcl@@UAEHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABUPointCloud2@sensor_msgs@@ABV?$Matrix@M$03$00$0A@$03$00@Eigen@@ABV?$Quaternion@M$0A@@8@_N@Z)".	main.obj
```

Nr.3

```
Fehler	3	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __cdecl pcl::console::print(enum pcl::console::VERBOSITY_LEVEL,char const *,...)" (?print@console@pcl@@YAXW4VERBOSITY_LEVEL@12@PBDZZ)" in Funktion ""public: int __thiscall pcl::PCDWriter::writeASCII<struct pcl::PointXYZ>(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class pcl::PointCloud<struct pcl::PointXYZ> const &,int)" (****$writeASCII@UPointXYZ@pcl@@@PCDWriter@pcl@@QAEHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV?$PointCloud@UPointXYZ@pcl@@@1@H@Z)".	main.obj
```


----------



## Der Wolf (7. Oktober 2013)

Hast du dir schonmal angeschaut ob dir "FIND_PACKAGE(PCL ..." überhaupt die richtigen Werte zurück liefert und in die verschiedenen Variablen einträgt. Auf Grund der Fehlermeldung würde ich darauf tippen, dass entweder

1. die Variablen ${PCL_COMMON_LIBRARIES} ${PCL_IO_LIBRARIES} nicht richtig befüllt wurden 

oder

2. das es die Funktionen/Methoden "pcl::console:: print", "pcl:CDWriter::writeBinary" und "PCDWrtiter::writeASCII" nicht in den angegeben Libraries vorhanden sind.

Gruß,
Wolf


----------



## TinTin-_- (7. Oktober 2013)

Hallo Der Wolf,

zu erstens
die werte von FIND_PACKAGE werden richtig zurückgelifert ansonsten würde er ja in Cmake nach der konfiguration sagen das er die libaries und etc. gar nicht gefunden hat, korigier mich falls ich da falsch liegen sollte.
und zu zweitens, ich hab bisher nur in den headern geschaut ob da die methoden vorhanden sind, dort sind alle so weit vorhanden, ich weiß jetzt nicht wie ich in die Libarys schau krieg da nur murcks raus, kann natürlich auch sein das ich grad nur zu doof bin 

Gruß 
TinTin-_-


----------



## Der Wolf (7. Oktober 2013)

Hallo,

das die verschiedenen Methoden und Funktionen zumindest in den Headern deklariert sind, war mir eigentlich klar, sonst hätte der Kompiler auch schon gemeckert und nicht erst der Linker. 

Wenn ich mich richtig erinnere gibt es für CMake ein Macro namens "MESSAGE". Du könntest also in die Werte in den verschiedenen Variablen darüber auf der Konsole ausgeben lassen.

Gruß,
Wolf


----------



## deepthroat (7. Oktober 2013)

Hi.

Ja, find_package mit dem REQUIRED Parameter würde einen Fehler auslösen wenn die Dateien nicht gefunden werden.

Anstatt die Werte mit message() ausgeben zu lassen, kannst du natürlich auch einfach in der CMake-GUI bzw. im Visual Studio Projekt nachschauen welche Biblitioken gelinkt werden.

Was hast du denn runtergeladen und installiert?

Zeig das Build-Protokoll aus dem Studio.

Bei mir funktioniert es (ich verwende VS 2010).


----------



## TinTin-_- (8. Oktober 2013)

Hallo deepthroat,

hast du das so gemacht wie es in dem tutorial beschrieben installiert?
Ich hab denn All in one installer für win7 64Bit VS2008 verwendet von der PCL website.


----------



## deepthroat (9. Oktober 2013)

TinTin-_- hat gesagt.:


> Hallo deepthroat,
> 
> hast du das so gemacht wie es in dem tutorial beschrieben installiert?


Ja, ich denke schon. Ich hab einfach den PCL-Installer für VS2010 installiert - CMake hatte ich schon.


TinTin-_- hat gesagt.:


> Ich hab denn All in one installer für win7 64Bit VS2008 verwendet von der PCL website.


Bei mir wird gegen folgende Bibliotheken gelinkt (abgesehen von Systembibliotheken):


```
C:\Program Files (x86)\OpenNI\Lib\openNI.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\Boost\lib\libboost_date_time-vc100-mt-gd-1_47.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\Boost\lib\libboost_filesystem-vc100-mt-gd-1_47.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\Boost\lib\libboost_iostreams-vc100-mt-gd-1_47.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\Boost\lib\libboost_system-vc100-mt-gd-1_47.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\Boost\lib\libboost_thread-vc100-mt-gd-1_47.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkCommon-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkDICOMParser-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkFiltering-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkGraphics-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkHybrid-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkIO-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkImaging-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkNetCDF-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkNetCDF_cxx-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkRendering-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkexoIIc-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkexpat-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkfreetype-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkftgl-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkjpeg-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkmetaio-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkpng-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtksqlite-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtksys-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtktiff-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkverdict-gd.lib
C:\Program Files (x86)\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkzlib-gd.lib
C:\Program Files (x86)\PCL 1.5.1\lib\pcl_common_debug.lib
C:\Program Files (x86)\PCL 1.5.1\lib\pcl_io_debug.lib
C:\Program Files (x86)\PCL 1.5.1\lib\pcl_octree_debug.lib
```
Evtl. fehlt bei dir da irgendwas? Insbesondere die pcl_XXX.lib sollten natürlich vorhanden sein.

Ansonsten, zeig das Build Protokoll.


----------



## TinTin-_- (10. Oktober 2013)

Hier das Buildprotokoll habs einfach ma reinkopiert


```
Buildprotokoll     Erstellen wurde gestartet: Projekt: "PCLTest", Konfiguration: "Debug|Win32"

 Befehlszeilen     Die temporäre Datei "d:\Eclipse Projekte\PCLTest\build\PCLTest.dir\Debug\RSP00000C98406368.rsp" wird erstellt. Inhalt:
[
/Od /I "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\include\vtk-5.8" /I "C:\Program Files\Bearbeitung\PCL 1.5.1\include\pcl-1.5" /I "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\Eigen\include" /I "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\Boost\include" /D "WIN32" /D "_WINDOWS" /D "_DEBUG" /D "DISABLE_OPENNI" /D "EIGEN_USE_NEW_STDVECTOR" /D "EIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET" /D "BOOST_ALL_NO_LIB" /D "CMAKE_INTDIR=\"Debug\"" /D "_MBCS" /FD /EHsc /RTC1 /MDd /Fo"PCLTest.dir\Debug\\" /Fd"D:\Eclipse Projekte\PCLTest\build\Debug/PCLTest.pdb" /W3 /c /Zi /TP "..\main.cpp"
]Erstellen der Befehlszeile "cl.exe @"d:\Eclipse Projekte\PCLTest\build\PCLTest.dir\Debug\RSP00000C98406368.rsp" /nologo /errorReport:prompt"Die temporäre Datei "d:\Eclipse Projekte\PCLTest\build\PCLTest.dir\Debug\RSP00000D98406368.rsp" wird erstellt. Inhalt:
[
/OUT:"D:\Eclipse Projekte\PCLTest\build\Debug\PCLTest.exe" /VERSION:0.0 /INCREMENTAL /LIBPATH:"C:\Program Files\Bearbeitung\PCL 1.5.1\lib\Debug" /LIBPATH:"C:\Program Files\Bearbeitung\PCL 1.5.1\lib" /MANIFEST /MANIFESTFILE:"PCLTest.dir\Debug\PCLTest.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"D:\Eclipse Projekte\PCLTest\build\Debug/PCLTest.pdb" /SUBSYSTEM:CONSOLE /DYNAMICBASE /NXCOMPAT /IMPLIB:"D:\Eclipse Projekte\PCLTest\build\Debug\PCLTest.lib"  /machine:X86 /debug kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\Boost\lib\libboost_system-vc90-mt-gd-1_48.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\Boost\lib\libboost_filesystem-vc90-mt-gd-1_48.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\Boost\lib\libboost_thread-vc90-mt-gd-1_48.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\Boost\lib\libboost_date_time-vc90-mt-gd-1_48.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\Boost\lib\libboost_iostreams-vc90-mt-gd-1_48.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\lib\pcl_common_debug.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkCommon-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkRendering-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkHybrid-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\lib\pcl_io_debug.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\Boost\lib\libboost_system-vc90-mt-gd-1_48.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\Boost\lib\libboost_filesystem-vc90-mt-gd-1_48.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\Boost\lib\libboost_thread-vc90-mt-gd-1_48.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\Boost\lib\libboost_date_time-vc90-mt-gd-1_48.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\Boost\lib\libboost_iostreams-vc90-mt-gd-1_48.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\lib\pcl_common_debug.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\lib\pcl_octree_debug.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\Boost\lib\libboost_system-vc90-mt-gd-1_48.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\Boost\lib\libboost_filesystem-vc90-mt-gd-1_48.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\Boost\lib\libboost_thread-vc90-mt-gd-1_48.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\Boost\lib\libboost_date_time-vc90-mt-gd-1_48.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\Boost\lib\libboost_iostreams-vc90-mt-gd-1_48.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\lib\pcl_common_debug.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\lib\pcl_io_debug.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\lib\pcl_octree_debug.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkRendering-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkGraphics-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkverdict-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkImaging-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkIO-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkFiltering-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkCommon-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkDICOMParser-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkNetCDF_cxx-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkmetaio-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtksys-gd.lib" ws2_32.lib comctl32.lib wsock32.lib "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtksqlite-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkpng-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtktiff-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkzlib-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkjpeg-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkexpat-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkftgl-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkfreetype-gd.lib" opengl32.lib "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkexoIIc-gd.lib" "C:\Program Files\Bearbeitung\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8\vtkNetCDF-gd.lib" vfw32.lib

".\PCLTest.dir\Debug\main.obj"

".\PCLTest.dir\Debug\PCLTest.exe.embed.manifest.res"
]Erstellen der Befehlszeile "link.exe @"d:\Eclipse Projekte\PCLTest\build\PCLTest.dir\Debug\RSP00000D98406368.rsp" /NOLOGO /ERRORREPORT:PROMPT" Ausgabefenster     Kompilieren...
main.cpp
c:\program files\bearbeitung\pcl 1.5.1\3rdparty\eigen\include\eigen\src/Geometry/OrthoMethods.h(94) : warning C4181: Qualifizierer wird auf Referenztyp angewendet; wird ignoriert
        C:\Program Files\Bearbeitung\PCL 1.5.1\include\pcl-1.5\pcl/common/distances.h(73): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template "Eigen::Matrix<_Scalar,_Rows,_Cols> Eigen::MatrixBase::cross3>(const Eigen::MatrixBase> &) const".
        with
        [
            _Scalar=float,
            _Rows=4,
            _Cols=1,
            Derived=Eigen::Matrix,
            BinaryOp=Eigen::internal::scalar_difference_op,
            Lhs=const Eigen::Matrix,
            Rhs=const Eigen::Matrix
        ]
c:\program files\bearbeitung\pcl 1.5.1\3rdparty\eigen\include\eigen\src/Geometry/OrthoMethods.h(46) : warning C4181: Qualifizierer wird auf Referenztyp angewendet; wird ignoriert
        C:\Program Files\Bearbeitung\PCL 1.5.1\include\pcl-1.5\pcl/common/impl/eigen.hpp(40): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template "Eigen::Matrix<_Scalar,_Rows,_Cols> Eigen::MatrixBase::cross(const Eigen::MatrixBase &) const".
        with
        [
            _Scalar=float,
            _Rows=3,
            _Cols=1,
            Derived=Eigen::Matrix
        ]

c:\program files\bearbeitung\pcl 1.5.1\3rdparty\eigen\include\eigen\src/Geometry/OrthoMethods.h(47) : warning C4181: Qualifizierer wird auf Referenztyp angewendet; wird ignoriert
Verknüpfen...
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: int __thiscall pcl::PCDWriter::writeASCII(class std::basic_string,class std::allocator > const &,struct sensor_msgs::PointCloud2 const &,class Eigen::Matrix const &,class Eigen::Quaternion const &,int)" (?writeASCII@PCDWriter@pcl@@QAEHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABUPointCloud2@sensor_msgs@@ABV?$Matrix@M$03$00$0A@$03$00@Eigen@@ABV?$Quaternion@M$0A@@8@H@Z)" in Funktion ""public: virtual int __thiscall pcl::PCDWriter::write(class std::basic_string,class std::allocator > const &,struct sensor_msgs::PointCloud2 const &,class Eigen::Matrix const &,class Eigen::Quaternion const &,bool)" (?write@PCDWriter@pcl@@UAEHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABUPointCloud2@sensor_msgs@@ABV?$Matrix@M$03$00$0A@$03$00@Eigen@@ABV?$Quaternion@M$0A@@8@_N@Z)".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: int __thiscall pcl::PCDWriter::writeBinary(class std::basic_string,class std::allocator > const &,struct sensor_msgs::PointCloud2 const &,class Eigen::Matrix const &,class Eigen::Quaternion const &)" (?writeBinary@PCDWriter@pcl@@QAEHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABUPointCloud2@sensor_msgs@@ABV?$Matrix@M$03$00$0A@$03$00@Eigen@@ABV?$Quaternion@M$0A@@8@@Z)" in Funktion ""public: virtual int __thiscall pcl::PCDWriter::write(class std::basic_string,class std::allocator > const &,struct sensor_msgs::PointCloud2 const &,class Eigen::Matrix const &,class Eigen::Quaternion const &,bool)" (?write@PCDWriter@pcl@@UAEHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABUPointCloud2@sensor_msgs@@ABV?$Matrix@M$03$00$0A@$03$00@Eigen@@ABV?$Quaternion@M$0A@@8@_N@Z)".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __cdecl pcl::console::print(enum pcl::console::VERBOSITY_LEVEL,char const *,...)" (?print@console@pcl@@YAXW4VERBOSITY_LEVEL@12@PBDZZ)" in Funktion ""public: int __thiscall pcl::PCDWriter::writeASCII(class std::basic_string,class std::allocator > const &,class pcl::PointCloud const &,int)" (****$writeASCII@UPointXYZ@pcl@@@PCDWriter@pcl@@QAEHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV?$PointCloud@UPointXYZ@pcl@@@1@H@Z)".

D:\Eclipse Projekte\PCLTest\build\Debug\PCLTest.exe : fatal error LNK1120: 3 nicht aufgelöste externe Verweise.
 Ergebnisse     Das Buildprotokoll wurde unter "file://d:\Eclipse Projekte\PCLTest\build\PCLTest.dir\Debug\BuildLog.htm" gespeichert.
PCLTest - 4 Fehler, 3 Warnung(en)
```


----------



## TinTin-_- (10. Oktober 2013)

Hab das Problem gelöst oder besser gesagt umgangen habs mit VS 2010 versucht und er hat jetzt nicht mehr denn fehler 
Danke an dich deepthroat häts ohne dich wahrscheinlich viel später oder gar nicht mit ner anderen VS Version probiert.

Jetzt sagt er mir aber das das Projekt nicht gestartet werden könne weil er die ALL_DEBUG Datei nicht öffnen kann.
Und es gibt keine Fehlermeldung nur n paar Warnungen 


```
Warnung	1	warning C4521: 'pcl::PointCloud<Eigen::MatrixXf>': Mehrere Kopierkonstruktoren angegeben	C:\Program Files\Bearbeitung\PCL 1.6\include\pcl-1.6\pcl\point_cloud.h	1021
Warnung	2	warning C4996: 'pcl::SHOT': USE SHOT352 FOR SHAPE AND SHOT1344 FOR SHAPE+COLOR INSTEAD	C:\Program Files\Bearbeitung\PCL 1.6\include\pcl-1.6\pcl\impl\point_types.hpp	1008
Warnung	3	warning C4996: 'pcl::SHOT': USE SHOT352 FOR SHAPE AND SHOT1344 FOR SHAPE+COLOR INSTEAD	C:\Program Files\Bearbeitung\PCL 1.6\include\pcl-1.6\pcl\impl\point_types.hpp	1009
Warnung	4	warning C4996: 'pcl::SHOT::rf': USE SHOT352 FOR SHAPE AND SHOT1344 FOR SHAPE+COLOR INSTEAD	C:\Program Files\Bearbeitung\PCL 1.6\include\pcl-1.6\pcl\impl\point_types.hpp	1012
Warnung	5	warning C4996: 'pcl::SHOT::descriptor': USE SHOT352 FOR SHAPE AND SHOT1344 FOR SHAPE+COLOR INSTEAD	C:\Program Files\Bearbeitung\PCL 1.6\include\pcl-1.6\pcl\impl\point_types.hpp	1013
Warnung	6	warning C4996: 'pcl::SHOT::descriptor': USE SHOT352 FOR SHAPE AND SHOT1344 FOR SHAPE+COLOR INSTEAD	C:\Program Files\Bearbeitung\PCL 1.6\include\pcl-1.6\pcl\impl\point_types.hpp	1014
Warnung	7	warning C4996: 'pcl::SHOT::descriptor': USE SHOT352 FOR SHAPE AND SHOT1344 FOR SHAPE+COLOR INSTEAD	C:\Program Files\Bearbeitung\PCL 1.6\include\pcl-1.6\pcl\impl\point_types.hpp	1014
Warnung	8	warning C4521: 'pcl::PointCloud<PointT>': Mehrere Kopierkonstruktoren angegeben	C:\Program Files\Bearbeitung\PCL 1.6\include\pcl-1.6\pcl\point_cloud.h	603
Warnung	9	warning C4305: 'specialization': Verkürzung von 'const unsigned int' in 'bool'	c:\program files\bearbeitung\pcl 1.6\3rdparty\eigen\include\eigen\src\Geometry\OrthoMethods.h	99
```


----------



## deepthroat (10. Oktober 2013)

TinTin-_- hat gesagt.:


> Jetzt sagt er mir aber das das Projekt nicht gestartet werden könne weil er die ALL_DEBUG Datei nicht öffnen kann.


Bitte die genaue Fehlermeldung und was genau du gemacht hast.

Die DLLs müssen im PATH sein, wenn du dein Programm aufrufen willst.


----------



## TinTin-_- (11. Oktober 2013)

Fehlermeldung ist "Das Programm "C:\...\Debug\ALL_BUILD" kann nicht gestartet werden.
Das System kann die angegebene Datei nicht finden.

Und was ich getan hab ist das ich den PCL Installer für VS 2010 genutzt hab, nachdem ich die Installation für PCL VS 2008 deinstalliert hab. Dann Qt nachinstalliert und in VS 2010 in den Projekt-Eigenschaften eingetragen.  Danach einfach Programm ausprobiert das wars auch schon.

Und die DLL sind im PATH.


----------



## TinTin-_- (15. Oktober 2013)

Hallo keiner mehr der da ne Ahnung hat wos bei mir hackt?


----------



## Der Wolf (15. Oktober 2013)

Hallo,

hat sich denn dein CMake File groß geändert? Wenn ich mir das aus deinem Start-Post so angucke sollte doch das Executable "PCLTest" heissen und nicht ALL_BUILD?!

Hast du schonmal in den angegebenen Ordner "C:\...\Debug" geschaut was da für .exe Dateien liegen? Überprüf daraufhin mal deine Projekt-Einstellungen unter VS10, speziell die unter "Configuration Properties -> Debugging".

Gruß,
Wolf


----------



## TinTin-_- (15. Oktober 2013)

Die CMake hat sich nicht geändert außer das ich

```
find_package(PCL 1.3 REQUIRED COMPONENTS common io)
```
durch

```
find_package(PCL 1.3 REQUIRED COMPONENTS)
```
ersetzt hab.

Im Debugordner ist die PCLTest.exe mit noch n paar anderen Debugdateien.
Und bei den Projekteinstellungen hab ich jetzt direkt keinen Fehler gefunden alles was mit dem Debuggen zu tun hat nutzt PCLTest und nicht ALL_BUILD.
Hab den Hacken beim Konfigurationsmanager für all_build noch reingemacht hat aber auch nicht sehr viel geholfen.
Wenn ichs jetzt normal Debugge bekomm ich die gleiche Fehlermeldung. Wenn ich abr jetzt die Projektmappe bereinige und dann erstellen mach bekomm ich folgenden Fehler.

```
Fehler	9	error LNK1168: "D:\Eclipse Projekte\PCLTest\build\Debug\PCLTest.exe" kann nicht zum Schreiben geöffnet werden.	D:\Eclipse Projekte\PCLTest\build\LINK
```
Und wenn ich nur die PCLTest.exe ausführ scheint sie das zu machen was sie machen soll es wird nämlich die testpcd.pcd datei erzeugt.

Alles recht seltsam wenn ich das mal sagen darf


----------



## Der Wolf (15. Oktober 2013)

Läuft deine Applikation eventuell irgendwie noch? Also deine PLCTest.exe, so dass die Datei gelockt ist und nicht vom VS10 gelöscht werden kann?

Wenn das Programm bei Ausführung über die Konsole genau das tut was es soll, würde ich immernoch darauf tippen, das irgendeine Einstellung in deinem Visual Studio Projekt nicht ganz stimmt.

Gruß,
Wolf


----------



## deepthroat (15. Oktober 2013)

Hi.

ALL_BUILD ist ein CMake-eigenes Zielprojekt. Es läßt sich nicht starten, da dieses Projekt keine ausführbare Datei erzeugt. Es ist lediglich dazu da "alle" Unterprojekte in der richtigen Reihenfolge zu erstellen (und CMake ggf. zum Regenerieren aufzurufen).

Das Projekt mit der ausführbaren Datei heißt natürlich so wie in der CMakelist.txt angegeben.

Man muß das dann im Studio manuell als "Startprojekt" festlegen damit es dann automatisch gestartet wird wenn man auf "Debug" oder "Run" klickt.


----------



## TinTin-_- (16. Oktober 2013)

hallo,
wo muss ich das als startprojekt festlegen und was jetzt das ALL_Build oder das PCLTest?


----------



## deepthroat (16. Oktober 2013)

TinTin-_- hat gesagt.:


> hallo,
> wo muss ich das als startprojekt festlegen und was jetzt das ALL_Build oder das PCLTest?


Überleg doch mal. Wenn sich das ALL_BUILD Projekt nicht starten läßt, macht es dann Sinn dies als Startprojekt festzulegen? 

Rechtsklick auf's Projekt und dann "Als Startprojekt festlegen" klicken.


----------



## TinTin-_- (16. Oktober 2013)

wuhuu es funktioniert endlich!! 

Danke für die hilfe


----------

