Nakarm swojego linkera, czyli Unresolved External Symbol

Kompilacja programów w C++ polega na tym, ze pliki źródłowe .cpp wraz z włączanymi przez nie nagłówkami .h, są tłumaczone do plików pośrednich .obj, które są następnie łączone ze sobą i z plikami bibliotecznymi .lib w końcowy plik wykonywalny, taki jak np .exe, czy .dll.Częsty błąd z którym spotykają się programiści:

error LNK2001: unresolved external symbol "void __cdecl f(void)" (?f@@YAXXZ)

oznacza, że nie znaleziono definicji danej funkcji (czyli jej ciała, bo jak pamiętamy definicja to powoływanie obiektu do życia). Można go niestety wykryć dopiero na etapie linkowania, a zdarza się on dość często. O przyczynach jego występowania można poczytać tutaj.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s