如何在 Visual Studio 社区版中将 pthread 库添加到 C++ 项目?

How to add pthread library to C++ project in Visual Studio Community Edition?

我希望能够在 visual studio 中使用 pthreads,因为我正在使用它进行调试,并且正在按照此处的教程进行操作。

http://web.cs.du.edu/~sturtevant/pthread.html

看起来很简单,将.h文件添加到C++ include目录,将.lib文件添加到lib目录。

但是,在检测 .h 文件时,出现错误:

Error   1   error LNK2019: unresolved external symbol __imp__pthread_create 

我认为这意味着未正确检测到 .lib 文件。

我想我可以将 .lib 文件添加到 lib 列表中 项目属性 -> 链接器 -> 附加依赖项 像这样使用它的完整路径:

D:\Visual Studio\VC\lib\pthreadVC2.lib;kernel32.lib;user32.lib;

不确定将新库附加到列表的开头或结尾是否有任何好处,但似乎都不起作用。

在命令行选项卡中,我们可以看到实际上是运行(我认为)的命令:

/OUT:"C:\projects\GTKWavePipe\NamedPipeTest\Debug\NamedPipeTest.exe" /MANIFEST /NXCOMPAT /PDB:"C:\projects\GTKWavePipe\NamedPipeTest\Debug\NamedPipeTest.pdb" /DYNAMICBASE "D:\Visual Studio\VC\lib\pthreadVC2.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG /MACHINE:X86 /INCREMENTAL /PGD:"C:\projects\GTKWavePipe\NamedPipeTest\Debug\NamedPipeTest.pgd" /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Debug\NamedPipeTest.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /TLBID:1 

有谁知道我可能做错了什么?最终我总是可以在我的 cygwin 环境中进行调试,但是我在那里使用的调试器不太好。

此外,我认为能够将库添加到 visual studio 中似乎是一项有用的技能。

您是否忘记将 .dll 文件添加到 bin 文件夹中?

如果您完全按照他的教程进行操作,则无需在附加依赖项中添加任何 .lib 文件(请注意他的教程中的步骤 6-10)。我按照他的教程进行操作并开始工作。我正在使用 Visual Studio 12.0 Ultimate,但它应该与您的 Visual Studio.

版本相同或非常相似的过程

我实际上是按照他的教程来的:http://web.cs.du.edu/~sturtevant/w13-sys/InstallingpthreadsforVisualStudio.pdf 他在其中为您提供了一个压缩文件夹,其中包含您需要的文件。我从那里得到了文件。

又是他的教程:

Add the 3 .h files (pthread.h, sched.h, sempahore.h) to the include folder under \VC (mine is C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC). Add the pthreadVC2.lib to the lib folder and pthreadVC2.dll file to the bin folder.

Next, open the property manager: in Visual Studio, go to View>Other Windows>Property Manager. Expand the Debug folder. Open Microsoft.Cpp.Win32.user (or a similarly named Property Sheet). Go to Common Properties>Linker>Input. In Additional Dependencies add pthreadVC2.lib as a dependency.

我想你的问题和我的差不多。

尽管您使用的是windows 64 位,不要复制64 位 的dll 和lib 文件。 改为选择 86

我的就是这样。