pthread.h в Visual Studio

Теги: pthread.h window, pthreads в visual studio, установка pthreads, POSIX threads в windows



Установка библиотеки 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.
Добавление дополнительных зависимостей в проект с использованием библиотеки pthread.h
Добавление дополнительных зависимостей в проект с использованием библиотеки pthread.h

Каждый новый проект потребует этого шага. Для проверки напишем простое приложение

#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

Всё ещё не понятно? – пиши вопросы на ящик email
Гид по линкерам для начинающих. Часть 2