我一直在尝试在我的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.h
和cstdlib
,所以我对为什么这里的代码不能编译感到相当困惑。
我哪里搞砸了?
感谢阅读我的帖子,任何指导都是赞赏!
1条答案
按热度按时间vktxenjb1#
您使用的示例不好且不完整。请尝试使用std::thread而不是pthread,它将工作并且更易于使用。
使用pthread比较复杂,不推荐使用,如果你真的想继续使用它,这里有一些起点: