2015-03-10 1 views
1

Я хотел иметь возможность использовать pthreads в visual studio, потому что я использовал его для отладки и следил за учебником здесь.Как добавить библиотеку pthread в проект C++ в Visual Studio Community Edition?

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

Это кажется достаточно простым, добавьте файлы .h в C++ включает в себя каталог и добавить файл .lib в Lib каталога.

Однако, в то время как .h файлы обнаруживаются, я получаю ошибку:

Error 1 error LNK2019: unresolved external symbol __imp__pthread_create 

я беру это означает, что файл .lib не обнаруживается должным образом.

Я думал, что я мог бы просто добавить файл .lib в Lib листинга на Свойства проекта -> Linker - Дополнительные> зависимостями используя полный путь, как так:

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, но отладчик, который я использую, не так хорош.

Плюс, я думаю, что возможность добавления библиотек в визуальную студию кажется полезным навыком.

ответ

4

Вы забыли добавить 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.

0

Я думаю, ваша проблема похожа с моей.

Хотя вы используете Windows 64bit, не копируете 64bit из dll и lib файла. Выберите 86 вместо.

Шахта работала таким образом.