Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2011, 20:46   #1
Cthutq66a
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 12
По умолчанию Ошибка: ссылка на неразрешенный внешний символ

Помогите пожалуйста разобраться с ошибкой.
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ __imp__pthread_join в функции _main main.obj TreadTest

Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ __imp__pthread_create в функции _main main.obj TreadTest

Ошибка 3 fatal error LNK1120: 2 неразрешенных внешних элементов C:\Users\Сергей\Documents\Visual Studio 2008\Projects\TreadTest\Debug\Tread Test.exe

Код:

#include <iostream> 

#include <pthread.h> 

using namespace std;

void *task1(void *X) //define task to be executed by ThreadA 
{ 
	cout << "Thread A complete" << endl; 
	return 0;
} 


void *task2(void *X) //define task to be executed by ThreadB 
{ 
	cout << "Thread B complete" << endl; 
	return 0;
} 


int main(int argc, char *argv[]) 

{ 
	pthread_t ThreadA,ThreadB; // declare threads 


	pthread_create(&ThreadA,NULL,task1,NULL); // create threads 

	pthread_create(&ThreadB,NULL,task2,NULL); 

	// additional processing 

	pthread_join(ThreadA,NULL); // wait for threads 

	pthread_join(ThreadB,NULL); 

	return(0);
}
Cthutq66a вне форума Ответить с цитированием
Старый 05.11.2011, 02:10   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Среди компилируемых файлов компоновщик не нашёл файла с определением pthread_create. Вероятно, в настройках проекта компоновщику не указан путь к папке, содержащей объектный файл библиотеки.
Abstraction вне форума Ответить с цитированием
Старый 05.11.2011, 09:46   #3
Cthutq66a
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 12
По умолчанию

В заголовочном файле функции объявлены след. образом:
Код:
PTW32_DLLPORT int PTW32_CDECL pthread_join()
Что обозначает данная конструкция?
Код:
#define PTW32_DLLPORT __declspec (dllexport)
Код:
#define PTW32_CDECL __cdecl
Код:
PTW32_DLLPORT int PTW32_CDECL
Cthutq66a вне форума Ответить с цитированием
Старый 05.11.2011, 09:59   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Я спрашиваю не про объявление, а про определение. Тело функции, грубо говоря.
Цитата:
Что обозначает данная конструкция?
__declspec (dllexport) - указание на то, что при сборке dll данная функция должна быть экспортирована (видима использующим dll).
__cdecl - соглашение о вызове для данной функции. Оно необходимо компилятору, чтобы правильно написать вызывающий функцию код (ту его часть, которая передаёт фаункции аргументы и принимает ответ).
Abstraction вне форума Ответить с цитированием
Старый 05.11.2011, 10:06   #5
Cthutq66a
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 12
По умолчанию

Охохох, видимо рано я в это дело полез)
Значит, говоришь, надо поискать определение функции...
Щас поищу.
Cthutq66a вне форума Ответить с цитированием
Старый 05.11.2011, 20:57   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Нет, надо поискать, откуда взялась функция pthread_create. Насколько я могу видеть, это сторонняя библиотека. Следовательно, компоновщик должен быть отдельно проинформирован о месте расположения объектных файлов этой библиотеки. Это было сделано?
Abstraction вне форума Ответить с цитированием
Старый 06.11.2011, 09:57   #7
Cthutq66a
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 12
По умолчанию

Нет, я раньше никогда сторонние библиотеки не устанавливал, все через стандартные делал.
Можно ссылочку на краткий FAQ?
Cthutq66a вне форума Ответить с цитированием
Старый 06.11.2011, 12:10   #8
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Ищите FAQ по Вашей среде разработки. Обычно в меню есть пункт "опции проекта", в этих опциях где-то есть пункт "компоновщик" (Linker) и/или пункт "пути".

В Visual Studio 2010: Project properties -> Configuration -> Linker -> General -> Additional Library Directories.
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ссылка на неразрешенный внешний символ Xenogig Общие вопросы C/C++ 4 07.05.2011 19:11
error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup Zhivu igrayuchi Visual C++ 2 25.12.2010 16:48
Сводная таблица. Ошибка неверная ссылка Lau Microsoft Office Excel 3 30.10.2010 18:56
Ссылка на неразрешенный внешний символ(error LNK2019) TheWanderer Общие вопросы C/C++ 2 07.08.2009 19:58
Внешний Ip Enemy Работа с сетью в Delphi 3 20.11.2007 01:00