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 1Ich 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!