#c #pthreads
#c #p — потоки
Вопрос:
Это ошибка, которую я получаю при привязке к построению простого кода с помощью потоков.
1>------ Rebuild All started: Project: Sample_with_Threads, Configuration: Debug Win32 ------
1> source.cpp
1>c:usersdocumentsvisual studio 2010projectssample_with_threadssource.cpp(39): warning C4715: 'set_cur_avg' : not all control paths return a value
1>LINK : fatal error LNK1104: cannot open file 'pthreadsVC2.lib'
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
Я использую Visual C , и я последовал http://web.cs.du.edu /~sturtevant/pthread.html чтобы включить в него pthreads.
Почему возникает ошибка и каково решение?
Ответ №1:
Эта ошибка связана с тем, что файл pthreadsVC2.lib
не является «видимым» для компоновщика. Убедитесь, что вы указали этот файл в списке библиотек для ссылки, а также (при необходимости) путь к этому файлу в настройках проекта, чтобы компоновщик: 1. «знал», что ему нужно связать эту библиотеку, и 2. мог найти файл
Из вашего вопроса звучит так, как будто вы «включили» pthreads (как в «включили файл заголовка»). Этого достаточно только для компиляции вашего исходного файла, но компоновщику необходимо знать, где найти символы, которые были включены в этот файл заголовка
Ответ №2:
Вы полностью следовали инструкциям в опубликованной вами ссылке? В нем говорится:
- Из папки lib при загрузке.
- Вставьте pthreadVC2.lib (библиотеку объектных файлов) в папку Visual Studio 2010 lib для C .
- На моем компьютере это находится по адресу C:Program Файлы (x86) Microsoft Visual Studio 10.0 VC lib. Вероятно, это будет похоже или то же самое на других системах.
Чуть дальше в нем также говорится:
- Перейдите в раздел Общие свойства> Компоновщик> Ввод.
- В дополнительных зависимостях добавьте pthreadVC2.lib в качестве зависимости.
Комментарии:
1. Хм, вы сделали это для всех конфигураций, которые вы создаете, например, Debug, Release и т. Д.? Вы уверены, что файлы dll и lib находятся там, где они должны быть? Извините, я не могу понять, почему это не сработало бы, если бы вы полностью выполнили все инструкции.
2. …а также убедитесь, что я ввожу «pthreadVC2.lib», а не «pthreadsVC2.lib». Действительно глупая ошибка.