2015-02-25 1 views
0

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

[email protected]:~/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 

ответ

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 ++. (Конечно, с C++ 11 на, следует предпочесть nullptr для нулевого указателя, а не NULL.)

Смежные вопросы