Linker Fehler



  • Hi! Ich bekomme folgenden Fehler:

    g++ -I./gtest-1.5.0/include -g -Wall -Wextra -c ./sample1_unittest.cc
    g++ -I./gtest-1.5.0/include -g -Wall -Wextra -lpthread sample1.o sample1_unittest.o TestClass.o gtest_main.a -o sample1_unittest
    Undefined symbols:
    "TestClass::vectorFunction2(int*, int)", referenced from:
    TestClassTest_vectorFunction2_Test::TestBody() in sample1_unittest.o
    ld: symbol(s) not found
    collect2: ld returned 1 exit status
    make: *** [sample1_unittest] Error 1

    Ich benutze Google GTest um Unittest zu machen. Deshalb wollte ich ein kleines Testprogramm schreiben um da erstmal reinzukommen.

    Mein Code sieht so aus:

    #ifndef TESTCLASS_H_
    #define TESTCLASS_H_
    
    #include <vector>
    
    class TestClass {
    
    	public:
    	std::vector<int> vectorFunction2( int* array, int length );
    
    };
    
    #endif /* TESTCLASS_H_ */
    
    #include "TestClass.h"
    
    std::vector<int> vectorFunction2( int* array, int length ) {
    
    	std::vector<int> intVec;
    	for( int i = 0; i < length; ++i )
    		intVec.push_back( array[i] );
    
    	return intVec;
    
    }
    

    Und die Test-Klasse so (Auszug betreffender Teil):

    // Test TestClass
    TEST(TestClassTest,vectorFunction2) {
    	TestClass testClass;
    	int* array = new int[3];
    	array[0] = 1;
    	array[1] = 2;
    	array[2] = 3;
    	std::vector<int> result = testClass.vectorFunction2( array, 3 );
    	EXPECT_EQ( 3, (int) result.size() );
    	delete array;
    }
    

    TEST und EXPECT_EQ sind Makros. TestClass.h habe ich eingebunden in die Testklasse.

    Was könnte hier falsch sein?



  • std::vector<int> vectorFunction2( int* array, int length ) {
    

    da (also in der source-datei) liegt der fehler 😛
    das hier fehlt noch:
    TestClass::

    bb



  • Ach Gott... 🙄 Danke!


Log in to reply