gpt4 book ai didi

c++ - 即使使用 lpthread 也有 undefined reference to `pthread_join' 错误

转载 作者:太空宇宙 更新时间:2023-11-04 10:56:00 24 4
gpt4 key购买 nike

我在 ubuntu 上使用 linux。但是,即使使用 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++ Path.o Maze.o SubmitMazeSoln.o TestSubmitMazeSoln.cpp -o -lpthread

-o 选项指定输出文件,并需要一个参数。如上所述,这个参数是-lpthread。所以 -lpthread 不是一个参数(并且不会搜索 pthread 库);它是您的输出文件的名称。 (而且您真的不想要名称为 -lpthread 的可执行文件或任何文件;以 - 开头的文件名在 Unix 下会导致无穷无尽的问题。)

关于警告:我从他们那里猜测 Point 中的 xy 的类型为 intNULL 是指定空指针的传统方式,将其用作 int 是一级混淆。所以 g++ 警告。 (当然,从 C++11 开始,人们应该更喜欢 nullptr 作为空指针,而不是 NULL。)

关于c++ - 即使使用 lpthread 也有 undefined reference to `pthread_join' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28721400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com