包含时pthread库“未解析的符号”(C++ 14,VS 22)

5lhxktic  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(119)

我一直在尝试在我的C项目中包含并使用pthreads库。我使用的是Visual Studio 2022 Community Edition和C 14,并且我正在x64配置中构建我的项目。
我通过NuGet包管理器安装了pthread库,我有pthreads包的v2.9.1.4。
我跟随this example学习pthreads库的基本用法,并在main函数中设置了线程创建代码,如下所示:

pthread_t threads[ThreadNum];
ThreadData td[ThreadNum];
int rc;
int i;

for (i = 0; i < ThreadNum; i++) 
{
    cout << "Creating Thread " << i << "...\n";

    td[i].threadID = i;
    td[i].message = "Message";

    rc = pthread_create(&threads[i], NULL, TEST_FUNCTION, (void*)(&td[i]));

    if (rc) 
    {
        cout << "Error: Unable to create Thread " << rc << "!\n";

        exit(-1);
    }
}

pthread_exit(NULL);

VS不会立即向我抛出错误,但在尝试编译时,会产生以下错误:

LNK2019 unresolved external symbol __imp_pthread_create referenced in function main
LNK2019 unresolved external symbol __imp_pthread_exit referenced in function main
LNK2001 unresolved external symbol __imp_pthread_exit

在我的main函数定义之上,我确保包含了pthread.hcstdlib,所以我对为什么这里的代码不能编译感到相当困惑。
我哪里搞砸了?
感谢阅读我的帖子,任何指导都是赞赏!

vktxenjb

vktxenjb1#

您使用的示例不好且不完整。请尝试使用std::thread而不是pthread,它将工作并且更易于使用。
使用pthread比较复杂,不推荐使用,如果你真的想继续使用它,这里有一些起点:

相关问题