#c #multithreading
Вопрос:
Я давний любитель python, переносящий сценарий на c. Я считаю, что в среде что-то не так, что мешает компиляции кода. Исследования в других местах наводят меня на мысль, что это как-то связано с файлами заголовков posix? Может быть, что-то с макросами? У меня недостаточно опыта в c, чтобы понять это.
Соответствующий фрагмент находится здесь:
pthread_t id;
thread_create(amp;id, NULL, refreshqb,NULL);
void *status;
pthread_start(id, (void**)amp;status);
Ошибка, которую я получаю, заключается в следующем.
t.c:91:4: warning: implicit declaration of function 'thread_create' is invalid in C99
[-Wimplicit-function-declaration]
thread_create(amp;id, NULL, refreshqb,NULL);
^
t.c:93:4: warning: implicit declaration of function 'pthread_start' is invalid in C99
[-Wimplicit-function-declaration]
pthread_start(id, (void**)amp;status);
^
2 warnings generated.
Undefined symbols for architecture x86_64:
"_pthread_start", referenced from:
_main in t-0d3a02.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Комментарии:
1. Вы уже указали
pthreads.h
, но, похоже, не используете его в своем файле C. Это немного сбивает с толку.
Ответ №1:
Поддержка pthreads должна быть явно включена при компиляции кода. Похоже, вы используете clang, поэтому просто добавьте -pthread
флаг при компиляции с использованием clang.
Комментарии:
1. Спасибо. Я еще не пробовал этого. Итак, «файл cc -pthread.c». Тогда.
2. @пользователь2930324 да! Если это не решит вашу проблему, не стесняйтесь оставить еще один комментарий, и я смогу взглянуть еще раз
Ответ №2:
Пожалуйста, попробуйте использовать pthread_create, а также включите правильный заголовок библиотеки posix или «#include <pthread.h>».
Комментарии:
1. Я сделал. Исходный файл намного длиннее, чем я опубликовал. Я просто включил соответствующий фрагмент.