如何解决在 Windows 10 上使用 VS2019 的 Linux (Raspbian) 中的 C/C++ 线程 -pthread - 无法编译
我正在尝试进行我的第一次线程处理,但无论我尝试过什么,我都无法编译。
我已经回去尝试编译一些演示代码,但遇到了与我的程序相同的问题。
如果我运行一个简单的打印 hello world 它可以很好地编译和部署程序,我可以简单地导航到并直接在 Pi4 上运行它。
线程演示代码
#include<stdio.h>
#include<string.h>
#include<pthread.h>
#include<stdlib.h>
#include<unistd.h>
pthread_t tid[2];
void* doSomeThing(void* arg)
{
unsigned long i = 0;
pthread_t id = pthread_self();
if (pthread_equal(id,tid[0]))
{
printf("\n First thread processing\n");
}
else
{
printf("\n Second thread processing\n");
}
for (i = 0; i < (0xFFFFFFFF); i++);
return NULL;
}
int main(void)
{
int i = 0;
int err;
while (i < 2)
{
err = pthread_create(&(tid[i]),NULL,&doSomeThing,NULL);
if (err != 0)
printf("\ncan't create thread :[%s]",strerror(err));
else
printf("\n Thread created successfully\n");
i++;
}
sleep(5);
return 0;
}
当我编译时我得到
Error /home/pi/projects/cpp_raspbian_thread_101/obj/x64/Debug/main.o: in function `main':
Error undefined reference to `pthread_create'
Error ld returned 1 exit status
为了解决这个问题,我尝试将 -pthread 或 -lpthread 添加到 项目 > 属性 > 配置属性 > C/C++ > 命令行 > 附加选项
那没有任何作用,我不确定这是否是放置它的正确位置。 我是在 VS2019 中构建的,所以我不是从命令行构建的,我不知道在哪里添加这个参数。
我也尝试过在 NuGet 中安装 pthreads,但这没有帮助。
VSCode 之类的其他软件似乎有可以将其添加到其中的文件,但我在 VS2019 中迷失了
感谢任何帮助。
编辑:
感谢回复
好的,因为@Eljay 建议我尝试使用 std::thread(再次)但有同样的问题。
// thread example
#include <iostream>
#include <thread>
void foo()
{
// do stuff...
}
int main()
{
std::thread first(foo);
return 0;
}
日志文件
Validating sources
copying sources remotely to '10.0.0.2'
Validating architecture
Validating architecture
Starting remote build
Compiling sources:
main.cpp
Linking objects
/usr/bin/ld : error : /home/pi/projects/cpp_raspbian_thread_101/obj/ARM/Debug/main.o: in function `std::thread::thread<void (&)(),void>(void (&)())':
/usr/include/c++/8/thread(135): error : undefined reference to `pthread_create'
collect2 : error : ld returned 1 exit status
所以我又回到了 pthread_create 问题
解决方法
好的,现在两个代码示例都可以编译并运行了。
正如我最初的想法,我需要在 VS2019 的某处添加 -pthread,但我把它放在了错误的部分。
前往 项目属性 > 配置属性 > 链接器 > 命令行
将 -pthread 添加到其他选项框并应用。
我希望能节省别人花我 3 天的时间整理它!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。