2014-10-02 2 views
5

Ich habe alle Abhängigkeiten und die vorkompilierte PCL-Bibliothek installiert, wie es auf ihrer site vorgeschlagen wurde.Projekt mit PCL (Point Cloud Library) unter Mac OS X generieren

Nachdem ich alles installiert hatte, wollte ich ein Projekt nach this Tutorial erstellen.

Nach dem Ausführen der ‚make‘ Befehl erhalte ich mehrere Warnungen und die folgenden zwei Fehler:

37 warnings generated. 
Linking CXX executable pcd_write_test 
Undefined symbols for architecture x86_64: 
    "pcl::PCDWriter::writeASCII(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, sensor_msgs::PointCloud2 const&, Eigen::Matrix<float, 4, 1, 0, 4, 1> const&, Eigen::Quaternion<float, 0> const&, int)", referenced from: 
     pcl::PCDWriter::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, sensor_msgs::PointCloud2 const&, Eigen::Matrix<float, 4, 1, 0, 4, 1> const&, Eigen::Quaternion<float, 0> const&, bool) in pcd_write.cpp.o 
    "pcl::PCDWriter::writeBinary(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, sensor_msgs::PointCloud2 const&, Eigen::Matrix<float, 4, 1, 0, 4, 1> const&, Eigen::Quaternion<float, 0> const&)", referenced from: 
     pcl::PCDWriter::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, sensor_msgs::PointCloud2 const&, Eigen::Matrix<float, 4, 1, 0, 4, 1> const&, Eigen::Quaternion<float, 0> const&, bool) in pcd_write.cpp.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
make[2]: *** [pcd_write_test] Error 1 
make[1]: *** [CMakeFiles/pcd_write_test.dir/all] Error 2 
make: *** [all] Error 2 

Jeder hat irgendwelche Vorschläge, wie dieses Problem beheben?

Ich benutze Mac OS X 10.9.4.

+0

Ich fand die Lösung in diesem [thread] [1]. [1]: http://stackoverflow.com/questions/16318961/how-do-i-link-pcl-library-properly-for-use-within-an-objective-c-app-compiled-in – Silex

+0

Haben Sie am Ende die Lösung gefunden? Ich habe genau das gleiche Problem. – JessMcintosh

+0

Ja, ich habe die Lösung im obigen Link (erster Kommentar) gefunden. – Silex

Antwort

3

auf einem Mac-Buch pro Yosemite (10.10.3) Ich habe die folgenden getan, um das PCL-Tutorial (pcd_write.cpp) laufen zu lassen.

im CMakeLists.txt

cmake_minimum_required(VERSION 2.6 FATAL_ERROR) 
project(MY_GRAND_PROJECT) 
find_package(PCL 1.8 REQUIRED COMPONENTS common io) 
include_directories(${PCL_INCLUDE_DIRS}) 
link_directories(${PCL_LIBRARY_DIRS}) 
add_definitions(${PCL_DEFINITIONS}) 
add_executable(pcd_write_test pcd_write.cpp) 
target_link_libraries(pcd_write_test ${PCL_COMMON_LIBRARIES} ${PCL_IO_LIBRARIES}) 

läuft ccmake .. in Build-Verzeichnis

CMAKE_BUILD_TYPE                
CMAKE_INSTALL_PREFIX    /usr/local         
CMAKE_OSX_ARCHITECTURES              
CMAKE_OSX_DEPLOYMENT_TARGET             
CMAKE_OSX_SYSROOT                
DAVIDSDK_INCLUDE_DIR    DAVIDSDK_INCLUDE_DIR-NOTFOUND     
DAVIDSDK_LIBRARY     DAVIDSDK_LIBRARY-NOTFOUND      
EIGEN_INCLUDE_DIRS    /opt/local/include/eigen3      
ENSENSO_INCLUDE_DIR    ENSENSO_INCLUDE_DIR-NOTFOUND     
ENSENSO_LIBRARY     ENSENSO_LIBRARY-NOTFOUND      
LIBUSB_1_INCLUDE_DIR    /opt/local/include       
LIBUSB_1_LIBRARY     /opt/local/lib/libusb-1.0.dylib    
OPENNI2_INCLUDE_DIRS    OPENNI2_INCLUDE_DIRS-NOTFOUND     
OPENNI2_LIBRARY     OPENNI2_LIBRARY-NOTFOUND      
OPENNI_INCLUDE_DIRS    /usr/include/ni        
OPENNI_LIBRARY     /usr/lib/libOpenNI.dylib      
PCL_COMMON_INCLUDE_DIR   /usr/local/include/pcl-1.8 
PCL_DIR       /usr/local/share/pcl-1.8      
PCL_IO_INCLUDE_DIR    /usr/local/include/pcl-1.8     
PCL_OCTREE_INCLUDE_DIR   /usr/local/include/pcl-1.8 

gibt und der Code i

#include <iostream> 
#include <pcl/io/pcd_io.h> 
#include <pcl/point_types.h> 
int main(int argc, const char * argv[]) { 
    //insert code here.. 
    pcl::PointCloud<pcl::PointXYZ> cloud; 

    cloud.width = 5; 
    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 ("test_pcd.pcd", cloud); 
    std::cerr << "Saved " << cloud.points.size() << " data points to test_pcd.pcd." << std::endl; 

    for (size_t i = 0; i < cloud.points.size(); ++i) 
     std::cerr << " " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl; 

    return (0); 

    std::cout << "Hello, World!\n"; 
    return 0; 
} 

erfolgreich

zusammengestellt ... hoffen, seine Nützlich für jemanden!

nik

+0

Vielen Dank! Binding cmake direkt an die pcl-1.8-Bibliothek funktionierte für mich! Nach all dem Gruseln hatte ich pcl-1.6 und pcl-1.8 ... für OSX war die Sache, die funktionierte, die Installation mit brew und die 1.8 funktionierte und lief (ich denke, aber nicht sicher) ... mit 1.8 bekam ich:./pcd_write_test Gespeichert 5 Datenpunkte zu test_pcd.pcd. 0,0080142 0,694695 -0,26015 -0,342265 -0,446349 0,214207 0,173687 -0,84253 -0,400481 -0,874475 0,706127 -0,117635 0,908514 -0,598159 0,744714 – Orbitus007