Błędy Linkera GCC C ++: Niezdefiniowane odniesienie do „vtable dla XXX”, Niezdefiniowane odniesienie do „ClassName :: ClassName ()”
Konfiguruję projekt C ++ na Ubuntu x64, używając Eclipse-CDT. Zasadniczo robię hello world i łączę się z komercyjną biblioteką firm trzecich.
Dodałem pliki nagłówkowe, połączone z ich bibliotekami, ale wciąż mam błędy linkera. Czy są tu jakieś inne problemy poza oczywistymi (np. Mam 99% pewności, że łączę się z właściwą biblioteką).
Czy istnieje sposób na potwierdzenie statycznych bibliotek, z którymi się łączę, są 64-bitowe?Czy istnieje sposób na potwierdzenie, że biblioteka ma klasę (i metody), której oczekuję?Eclipse mówi:
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