繁体   English   中英

如何在Visual Studio Community Edition中将pthread库添加到C ++项目?

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

我希望能够在Visual Studio中使用pthread,因为我正在使用它进行调试,并且在这里按照本教程进行操作。

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文件添加到Project Properties-> Linker-> Additional Dependencies的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 ,其中他为您提供了一个包含所需文件的压缩文件夹。 我从那里得到文件。

这又是他的教程:

将3个.h文件(pthread.h,sched.h,sempahore.h)添加到\\ VC下的include文件夹中(我的文件夹是C:\\ Program Files(x86)\\ Microsoft Visual Studio 12.0 \\ VC)。 将pthreadVC2.lib添加到lib文件夹,将pthreadVC2.dll文件添加到bin文件夹。

接下来,打开属性管理器:在Visual Studio中,转到“视图”>“其他Windows”>“属性管理器”。 展开Debug文件夹。 打开Microsoft.Cpp.Win32.user(或类似的属性表)。 转到通用属性>链接器>输入。 在“其他依赖关系”中,添加pthreadVC2.lib作为依赖关系。

我猜你的问题和我的相似。

尽管您使用的是Windows 64位, 但不要复制64位的dll和lib文件。 选择86代替

我的工作就是这样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM