GCC C ++ Linker-Fehler: Undefinierter Verweis auf 'vtable for XXX', Undefinierter Verweis auf 'ClassName :: ClassName ()'

Ich richte unter Ubuntu x64 ein C ++ - Projekt mit Eclipse-CDT ein. Ich mache im Grunde eine Hallo-Welt und verlinke zu einer kommerziellen 3rd-Party-Bibliothek.

Ich habe die Header-Dateien eingefügt, die mit ihren Bibliotheken verknüpft sind, aber ich erhalte immer noch Linker-Fehler. Gibt es hier andere mögliche Probleme als die offensichtlichen (z. B. bin ich zu 99% sicher, dass ich auf die richtige Bibliothek verweise).

Gibt es eine Möglichkeit zu bestätigen, dass die statischen Bibliotheken, mit denen ich verknüpfe, 64-Bit sind?Gibt es eine Möglichkeit, um zu bestätigen, dass die Bibliothek die Klasse (und Methoden) hat, die ich erwarte?

Eclipse sagt:

Building target: LinkProblem
Invoking: GCC C++ Linker
g++ -L/home/notroot/workspace/somelib-3/somelib/target/bin -o"LinkProblem"  ./src/LinkProblem.o   -lsomelib1 -lpthread -lsomelib2 -lsomelib3
./src/LinkProblem.o: In function `main':
/home/notroot/workspace/LinkProblem/Debug/../src/LinkProblem.cpp:17: undefined reference to `SomeClass::close()'
./src/LinkProblem.o: In function `SomeOtherClass':
/home/notroot/workspace/somelib-3/somelib/include/sql/somefile.h:148: undefined reference to `SomeClass::SomeClass()'
/home/notroot/workspace/somelib-3/somelib/include/sql/somefile.h:148: undefined reference to `vtable for SomeOtherClass'
/home/notroot/workspace/somelib-3/somelib/include/sql/somefile.h:151: undefined reference to `SomeClass::~SomeClass()'
./src/LinkProblem.o: In function `~SomeOtherClass':
/home/notroot/workspace/somelib-3/somelib/include/sql/somefile.h:140: undefined reference to `vtable for SomeOtherClass'
/home/notroot/workspace/somelib-3/somelib/include/sql/somefile.h:140: undefined reference to `SomeClass::~SomeClass()'
/home/notroot/workspace/somelib-3/somelib/include/sql/somefile.h:140: undefined reference to `SomeClass::~SomeClass()'
collect2: ld returned 1 exit status
make: *** [LinkProblem] Error 1

Antworten auf die Frage(12)

Ihre Antwort auf die Frage