Przedtem zawsze uważałem, że kolejność przekazywania obiektów i bibliotek do g ++ podczas etapu łączenia nie jest ważna. Następnie, dzisiaj, starałem się linkować z kodu C++ do kodu c. Zapakowałem wszystkie nagłówki C w zewnętrzny blok "C", ale linker wciąż miał trudności ze znalezieniem symboli, które znałem w archiwach obiektów C.g ++ uzależniając zależność od kolejności przy łączeniu kodu c do kodu C++
Zaskoczony, stworzyłem stosunkowo prosty przykład wyizolowania błędu łączenia, ale ku mojemu zdziwieniu prostszy przykład został połączony bez żadnych problemów.
Po krótkiej próbie i błędzie stwierdziłem, że poprzez emulację wzorca łączenia używanego w prostym przykładzie, mógłbym uzyskać główny kod do połączenia OK. Wzór został pierwszy kod obiektu, obiekt archiwa Drugi przykład:
g++ -o serverCpp serverCpp.o algoC.o libcrypto.a
Czy ktoś może rzucić nieco światła na dlaczego to może być tak ?. Nigdy nie widziałem tego problemu podczas łączenia zwykłego kodu C++.
Aby uzyskać szczegółowe informacje, patrz: http://stackoverflow.com/questions/1095298/gcc-c-linker-errors- nieokreślona-referencja -to-vtable-for-xxx-undefined-refer/1095321 # 1095321 –