Powiedz, że mam tę funkcję o nazwie DoThis (const char * abc) w pliku o nazwie one.cpp. Więc kiedy próbuję wywołać tę funkcję z innej funkcji w innym pliku źródłowym (dwa.cpp), pojawia się błąd: błąd LNK2001: nierozwiązany symbol zewnętrzny (C++), mimo że użyłem #include "one.h" Co by było Mam to naprawić?błąd LNK2001: nierozwiązany symbol zewnętrzny (C++)
Odpowiedz
Oznacza to, że definicja twojej funkcji nie występuje w twoim programie. Zapomniałeś dodać tego one.cpp
do swojego programu.
To, co "dodać" w tym przypadku, zależy od środowiska kompilacji i jego terminologii. W MSVC (ponieważ najwyraźniej używasz MSVC), musisz dodać one.cpp
do projektu.
W bardziej praktycznych kategoriach, odnoszących się do wszystkich typowych metod budowania, po połączeniu programu brakuje pliku obiektu utworzonego z formularza one.cpp
.
Ale co, jeśli powiesz, że mój plik jest plikiem tylko nagłówkowym, powoduje jego abstrakcyjną klasę? Przepraszam, że wykopię stary post :) –
@Niklas Vest: Jeśli wszystko jest tam, w nagłówku, kompilator/linker powinien być w stanie znaleźć wszystko bez żadnych problemów. To znaczy. LNK2001 po prostu się nie pojawi. Umieszczanie nieodpowiednich rzeczy w plikach nagłówków zwykle zwiększa ryzyko LNK 2005, które znajduje się na drugim końcu spektrum: zbyt wiele definicji. – AnT
Wygląda na to, że używasz Microsoft Visual C++. W takim przypadku największa możliwość polega na tym, że nie kompilujesz pliku two.cpp z plikiem one.cpp (one.cpp jest implementacją dla jednego.h).
Jeśli jesteś z linii poleceń (cmd.exe), a następnie spróbuj ten pierwszy: cl -o two.exe one.cpp two.cpp
Jeśli jesteś z IDE, kliknij prawym przyciskiem myszy na nazwę projektu z Solution Explore. Następnie wybierz Dodaj, Istniejąca pozycja .... Dodaj jeden.cpp do swojego projektu.
- 1. błąd LNK2001: nierozwiązany symbol zewnętrzny _MessageBox
- 2. błąd LNK2019: nierozwiązany zewnętrzny symbol opencv
- 3. błąd LNK2001: nierozwiązany symbol zewnętrzny "__declspec (dllimport) public: class QString & __thiscall QString :: operator = (klasa QString &&)"
- 4. C++ ciągle dostaję błąd LNK2019: nierozwiązany zewnętrzny symbol
- 5. C++: błąd LNK: nierozwiązany symbol zewnętrzny, wynikający z funkcji wirtualnych
- 6. Błąd LNK2019: Nierozwiązany symbol zewnętrzny w Visual Studio
- 7. Jak mogę rozwiązać problem "błąd LNK2019: nierozwiązany symbol zewnętrzny"?
- 8. Błędy C++ LNK1120 i LNK2019: "nierozwiązany symbol zewnętrzny WinMain @ 16"
- 9. Glew w VS 2010: nierozwiązany symbol zewnętrzny __imp__glewInit
- 10. C++ Błąd LNK2001: nierozwiązanych zewnętrznych funkcja symbol _MAIN
- 11. Nierozwiązany zewnętrzny (konstruktor klasy abstrakcyjnej/destruktor)
- 12. Jak pozbyć się tego błędu: "MSVCRTD.lib (crtexe.obj): błąd LNK2019: nierozwiązany zewnętrzny symbol _ odniesienie w funkcji ___tmainCRTStartup"
- 13. Błąd LNK2019 nierozwiązany symbol zewnętrzny _main przywoływany w funkcji "int __cdecl invoke_main (void)" (? Invoke_main @@ YAHXZ)
- 14. Jak połączyć bibliotekę DLL z moim projektem? błąd LNK2019: nierozwiązany zewnętrzny symbol
- 15. nierozwiązany zewnętrzny błąd symbolu podczas importowania bibliotek dla OpenCV2.3 w Visual Studios 2010 Express C++
- 16. Łączenie partycji .libs w celu utworzenia biblioteki DLL: nierozwiązany symbol zewnętrzny _DllMainCRTStartup
- 17. nierozwiązany symbol zewnętrzny dla __declspec (dllimport) podczas używania biblioteki dll do eksportu klasy
- 18. błąd LNK2001 __imp_fprintf Visual Studio 2015 RC
- 19. Nierozwiązane symbol zewnętrzny na statycznych członków klasy
- 20. Flann działa nierozwiązany externals
- 21. Błąd Turbo C++ 4.5 "nieokreślony symbol owlmain ..."
- 22. Clojure błąd oceny symbol
- 23. Nie mogę skompilować rozwiązania z powodu "Błąd LNK2028: nierozwiązany token ..."
- 24. Jetbrains: Ukryj nierozwiązany błąd zmiennej (czasami)
- 25. zewnętrzny podnośnik w C
- 26. dlopen - niezdefiniowany błąd symbol
- 27. błąd LNK2001: nierozwiązanych zewnętrznych symbolu „private: klasa statyczna
- 28. Stałe w Objective-C i symbol „duplikat” Błąd linkera
- 29. Python ctypes błąd ładowania: niezdefiniowany symbol
- 30. Program C++ używający nagłówków biblioteki C rozpoznaje "to" jako słowo kluczowe. Zewnętrzny błąd "C"?
Jest również zdefiniowany w one.h – Enigma
Funkcja DoThis jest zdefiniowana w nagłówku. – user2549990
są oba pliki powiązane z projektem? – Enigma