pthread.h в Visual Studio
Установка библиотеки pthread.h в среде Visual Studio
На примере Visual Studio 2012 Express Edition, Windows 7. Воспользуемся ресурсом ftp://sourceware.org/pub/pthreads-win32/dll-latest
- 1. Скачайте все заголовочные *.h файлы из папки include и поместите их в папку include среды Visual Studio.
Папка располагается примерно по такому адресуC:\Program Files\Microsoft Visual Studio 12.0\VC\include - 2. На ftp сервере перейдите в папку bin, далее в папку с подходящей архитектурой. Скопируйте в папку bin студии файл pthreadVSE2.dll.
У меня эта папка располагается по адресуC:\Program Files\Microsoft Visual Studio 12.0\VC\bin - 3. Перейдите в папку lib, далее в папку с вашей архитектурой. Скопируйте файл pthreadVSE2.lib в папку lib студии.
У меня она располагается по адресуC:\Program Files\Microsoft Visual Studio 12.0\VC\lib
Теперь появится возможность добавлять библиотеку pthread.h: Visual Studio увидит её, будет подсвечивать синтаксис и выводить подсказки.
- 4. Создайте пустой проект. Откройте окно «Свойства проекта». Для этого либо кликните правой кнопкой мыши по имени проекта в
Обозревателе решений | Свойства, либо откройтеПроект | Свойства.
Во вкладкеСвойства конфигурации | Компоновщик | Вводдобавьте справа в дополнительные зависимости имя библиотеки pthreadVSE2.lib.
Каждый новый проект потребует этого шага. Для проверки напишем простое приложение
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <conio.h>
#define ERROR_CREATE_THREAD -11
#define ERROR_JOIN_THREAD -12
void* helloWorld(void *args) {
printf("Hello from thread!\n");
return NULL;
}
int main() {
pthread_t thread;
int status;
int status_addr;
status = pthread_create(&thread, NULL, helloWorld, NULL);
if (status != 0) {
printf("main error: can't create thread, status = %d\n", status);
exit(ERROR_CREATE_THREAD);
}
printf("Hello from main!\n");
status = pthread_join(thread, (void**)&status_addr);
if (status != 0) {
printf("main error: can't join thread, status = %d\n", status);
exit(ERROR_JOIN_THREAD);
}
printf("joined with address %d\n", status_addr);
_getch();
return 0;
}
Вместо pthreadVSE2 можно качать и устанавливать файлы pthreadVC2. Но тогда и в дополнительных зависимостях придётся писать pthreadVC2.lib.
Q&A
Всё ещё не понятно? – пиши вопросы на ящик
