Имея неопределенную ссылку на ошибку `pthread_join ', даже используя lpthread

0

Я использую linux на ubuntu. Однако у меня проблема даже при использовании pthread и lpthread. Пожалуйста помоги! Заранее спасибо!

yuki@ubuntu:~/NetBeansProjects/csci212A3$ g++ Path.o Maze.o SubmitMazeSoln.o TestSubmitMazeSoln.cpp -o -lpthread
In file included from Maze.h:12:0,
             from TestSubmitMazeSoln.cpp:11:
Assignm3_Utils.h: In constructor ‘Point::Point():
Assignm3_Utils.h:17:19: warning: converting to non-pointer type ‘int from NULL [-Wconversion-null]
Point ()    { x = NULL; y = NULL; }
               ^
Assignm3_Utils.h:17:29: warning: converting to non-pointer type ‘int from NULL [-Wconversion-null]
Point ()    { x = NULL; y = NULL; }
                         ^
/tmp/ccMQbyoO.o: In function 'newThread()':
TestSubmitMazeSoln.cpp:(.text+0x3ab2): undefined reference to 'pthread_create'
TestSubmitMazeSoln.cpp:(.text+0x3b0a): undefined reference to 'pthread_create'
TestSubmitMazeSoln.cpp:(.text+0x3b53): undefined reference to 'pthread_join'
TestSubmitMazeSoln.cpp:(.text+0x3b79): undefined reference to 'pthread_join'
collect2: error: ld returned 1 exit status
Теги:
g++
pthreads

1 ответ

1

Это действительно точная копия вашей командной строки:

g++ Path.o Maze.o SubmitMazeSoln.o TestSubmitMazeSoln.cpp -o -lpthread

Параметр -o указывает выходной файл и ожидает аргумент. Как указано выше, этот аргумент -lpthread. Поэтому -lpthread не является аргументом (и библиотека pthread не будет искать); это имя вашего выходного файла. (И вы действительно не хотите, исполняемый файл, или любой другой файл, с именем -lpthread; имена файлов, которые начинаются с -. Не вызывает никакого конца проблем под Unix)

Что касается предупреждений: я бы предположил, что x и y в Point имеют тип int. NULL является обычным способом указания нулевого указателя, а его использование в качестве int является обфускацией в первой степени. Поэтому g++ предупреждает. (Конечно, из С++ 11 on, следует предпочесть nullptr для нулевого указателя, а не NULL.)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню