LNK1104: не удается открыть файл pthreadsVC2.lib

#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». Действительно глупая ошибка.