W tym samouczku omówimy niektóre z głównych przyczyn tego błędu i jak go rozwiązać."
Zacznijmy.
Przyczyna
Istnieje kilka powodów, dla których występuje błąd „nieokreślone odniesienie do pthread_create”.
Jeden przykładowy kod jest pokazany poniżej:
#włączaćPowyższy kod zawiera prosty program PTHREAD, który po prostu drukuje prostą wiadomość tekstową. Jeśli jednak spróbujemy skompilować powyższy kod, zwraca błąd.
Przyczyna 1: Brak pliku nagłówka wątku
W C możliwość tworzenia wielu wątków w programie jest dostarczana przez PTHREAD.H. Dlatego zanim będziemy mogli użyć pthread_create i wszystkich jego dostarczonych funkcji, musimy dołączyć ten plik nagłówka w naszym programie.
Stąd w niektórych przypadkach nie uwzględniają PTHREAD.H Plik nagłówka spowoduje niezakłócone odniesienie.
Możemy to naprawić, włączając plik, jak pokazano:
#włączaćPo uwzględnieniu możemy przejść do kompilacji i przetestowania naszego programu.
Przyczyna 2: Niepoprawna flaga kompilatora
Inną powszechną przyczyną błędu „Niezdefiniowanego odniesienia do pthread_create” jest opracowanie programu z nieprawidłowymi flagami kompilatora.
Na przykład, jeśli kompilujesz program C za pomocą polecenia:
$ gcc -o wątki posix_threads.COtrzymasz błąd „Nieokreślone odniesienie do pthreads”.
Upewniając się, że PTHREADS.Plik H jest zawarty w pliku nagłówka; Musisz skompilować swój kod z odpowiednią flagą kompilatora.
Prawidłowe polecenie kompilatora GCC pokazano poniżej:
gcc -pthread -o wątki posix_threads.CZapraszam do wymiany danych wyjściowych i wejściowych.
Dodanie opcji -pthread do poleceń kompilatora umożliwia kompilator wykonanie kodu za pomocą pthread.Biblioteka H.
Przyczyna 3: Brak flagi cmake
Jeśli używasz pliku Make do kompilacji programu, musisz podać opcje pthread w pliku.
Możesz to zrobić, dodając następujący wiersz do pliku Make.
add_compile_options (-pthread)Lub
Set (cmake_cxx_flags "$ cmake_cxx_flags -pthread")Zamknięcie
W tym krótkim samouczku omówiliśmy błąd „Nieokreślone odniesienie do pthread_create” podczas pracy z wątkami POSIX. Chociaż omówiliśmy uniwersalne przyczyny tego błędu, może być konieczne sprawdzenie środowiska programistycznego i upewnić się, że wymagane biblioteki są poprawnie powiązane.
Mamy nadzieję, że podobał Ci się samouczek, dzięki za przeczytanie.