C/C++ Linux (Raspbian) 中的线程在 Windows 上使用 VS2019 10 -pthread - 无法编译

C/C++ Threading in Linux (Raspbian) using VS2019 on Windows 10 -pthread - Can't compile

我正在尝试进行我的第一部分线程处理,但无论我尝试了什么,我都无法编译它。

我已经回去尝试编译一些演示代码,但我遇到了与我的程序相同的问题。

如果我 运行 一个简单的打印 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 天时间来整理它!