Mam tę aplikację MFC, nad którą pracuję, która musi mieć osadzoną bazę danych. Więc poszedłem na polowanie na zręczną, szybką "wbudowalną" bazę danych i natknąłem się na SQLite.Jak mogę rozwiązać problem "błąd LNK2019: nierozwiązany symbol zewnętrzny"?
Stworzyłem z nim DB, a ja stworzyłem projekt biblioteki statycznej z Visual Studio 2008. projekt biblioteki zostanie wykorzystany w innym głównym projekcie.
W projekcie bibliotecznym utworzyłem klasę DBClass
za pomocą metody AddFeedToDB(CFeed f)
. Projekt biblioteki korzysta z pliku .lib
z codeproject (cppsqlite3.lib
).
Podczas kompilowania biblioteki statyczne, nie zostanie wykryty błąd, ale gdy próbuję użyć pliku projektu biblioteki w głównym projekcie, mam tego typu błędów:
error LNK2019: unresolved external symbol "public:void __thiscall
CppSQLite3DB::close(void)" ([email protected]@@QAEXXZ
referenced in function "public: int __thiscall
CTalkingFeedsDB::AddFeedToDB(class CFeed,char const*)" (?
[email protected]@@[email protected]@[email protected]
Czego mi brakuje?
Czy to odpowiada na dane pytanie? – ST3
@ ST3: najwyraźniej rozwiązał ten konkretny przypadek. Nie jest to ogólna recepta na rozwiązywanie błędów linkerów, jeśli o to ci chodzi. – xtofl
Tak, dodanie tej linii rozwiązało również mój (podobny) problem. To, co się faktycznie dzieje, to to, że jakiś projekt potrzebuje symbolu zdefiniowanego w innej bibliotece dll, która nie jest eksportowana (zazwyczaj MSVS). –