Anfänger Problem nicht definierter Verweis



  • Hallo ich bekomme folgende Fehlermeldungen beim kompilieren meines Programmes. Ich möchte eigentlich nur eine Punktwolke einlesen (mit PCL).

    Auszug aus der main methode:

    #include "ReadTree.h"
    int main(int argc, char** argv) {
    
    	// ------------------------------------
    	// -----Load Cherry 1             -----
    	// ------------------------------------
    	std::cout << "Loading cherry#1" << "\n";
    	ReadTree tree;
    	std::cout << "Loading cherry#1" << "\n";
    }
    

    meine ReadTree.h:

    /*
     * ReadTree.h
     *
     *  Created on: 06.11.2014
     *      Author: hackenberg
     */
    
    //#ifndef READTREE_H_
    //#define READTREE_H_
    #include <iostream>
    #include <pcl/point_types.h>
    #include <pcl/io/pcd_io.h>
    
    class ReadTree {
    
    	std::string path;
    	pcl::PointCloud<pcl::PointXYZINormal> cloudIntens;
    	pcl::PointCloud<pcl::PointXYZRGBNormal> cloudRGB;
    
    public:
    	ReadTree();
    	virtual ~ReadTree();
    	void init();
    	void import();
    
    	const pcl::PointCloud<pcl::PointXYZINormal>& getCloudIntens() const {
    		return cloudIntens;
    	}
    
    };
    
    //#endif /* READTREE_H_ */
    

    und die entsprechende cpp:

    /*
     * ReadTree.cpp
     *
     *  Created on: 06.11.2014
     *      Author: hackenberg
     */
    
    #include "ReadTree.h"
    
    ReadTree::ReadTree() {
    	ReadTree::init();
    	ReadTree::import();
    
    }
    
    ReadTree::~ReadTree() {
    	// TODO Auto-generated destructor stub
    }
    
    void ReadTree::init() {
    	ReadTree::path { "../data/cherry_low.pcd" };
    	ReadTree::cloudIntens(new pcl::PointCloud<pcl::PointXYZINormal>);
    }
    
    void ReadTree::import() {
    	if (pcl::io::loadPCDFile<pcl::PointXYZINormal>(ReadTree::path,
    			ReadTree::cloudIntens) == -1)  //* load the file
    			{
    		PCL_ERROR("Couldn't read pcd input file. \n");
    
    	} else {
    		std::cout << "Imported file successfully.";
    	}
    
    }
    

    Die Fehlermeldung:

    CMakeFiles/simpleTree.dir/simpleTree.cpp.o: In Funktion `main':
    simpleTree.cpp:(.text+0x46dd): Nicht definierter Verweis auf `ReadTree::ReadTree()'
    make[2]: Verlasse Verzeichnis '/home/hackenberg/workspace/simpleTree/build'
    simpleTree.cpp:(.text+0x50e1): Nicht definierter Verweis auf `ReadTree::~ReadTree()'
    make[1]: Verlasse Verzeichnis '/home/hackenberg/workspace/simpleTree/build'
    simpleTree.cpp:(.text+0x53da): Nicht definierter Verweis auf `ReadTree::~ReadTree()'
    

    Ich verstehe nicht, wieso der Compiler meckert, Konstruktor und Destruktor sind doch richtig definiert ???



  • Beim Zusammenbau wird ReadTree.cpp wohl nicht berücksichtigt.



  • Und was kann ich machen, damit es berücksichtigt wird?
    Ich habe das ganze als CTE Projekt in eclipse. ReadTree.cpp und ReadTree.h liegen beide im src folder. Ich verwende cmake mit folgender CMakeList:

    cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
    
    project(simpleTree)
    
    find_package(PCL 1.2 REQUIRED)
    
    include_directories(${PCL_INCLUDE_DIRS})
    link_directories(${PCL_LIBRARY_DIRS})
    add_definitions(${PCL_DEFINITIONS})
    
    add_executable (simpleTree simpleTree.cpp)
    target_link_libraries (simpleTree ${PCL_LIBRARIES})
    

    Liegt hier der Hund begraben? Ich komme eigentlich aus der Java Ecke und schreibe im Moment ein kleines Projekt um, weil die pcl Library einfach zu viel bietet im Gegensatz zu Java. Mein Wissensstand in C++ beruft sich auf die ersten 350 Seiten in C++ - Das umfassende Handbuch und Tutorials der pcl welche auch laufen und ich auch erweitern kann. Von cmake habe ich bisher noch die Finger gelassen, weils mit nem ein Dateienprojekt von den Tutorials her halt ging.



  • Keine Ahnung. Falsches Forum.


  • Mod

    hacke1978 schrieb:

    Liegt hier der Hund begraben?

    Ich spreche zwar kein CMake, aber da hier nirgends die ReadTree.cpp auftaucht, ist es doch offensichtlich, dass es da dran liegt.

    Bekommst du das alleine hin oder soll ich den Thread in ein Forum verschieben, der passender fuer Fragen zur Benutzung von cmake ist?



  • Bei add_executable fehlt ReadTree.cpp:

    add_executable (simpleTree simpleTree.cpp ReadTree.cpp)
    

Log in to reply