На вашем компьютере отсутствует поток ускорения C++

У меня возникла очень странная проблема, когда я пытаюсь запустить свою программу в блоках кода с помощью компилятора g++. Я установил boost И использовал его, возможно, неделю назад, у меня никогда не было проблем. Сегодня я вернулся к проекту, над которым работал, и внезапно при попытке его запустить я получаю следующее сообщение об ошибке.

Программа не может запуститься, так как на вашем компьютере отсутствует libboost_thread-mgw47-mt-1_53.dll. Попробуйте переустановить программу, чтобы решить эту проблему.

Теперь я использовал поток ускорения раньше в этой программе, поэтому я понятия не имею, почему я получаю это. Что также странно, так это то, что потоки повышения работают в других моих проектах.

Как мне попытаться решить эту проблему? Кажется, все на месте, переменные пути установлены, компилятор, параметры компоновщика установлены и т. д. Ничего, о чем я знаю, не изменилось с тех пор, как я в последний раз успешно запускал эту программу. Сегодня я обновил Visual Studio, но не думаю, что это должно иметь какое-либо влияние. Я не совсем уверен, какую еще информацию я могу дать, так как понятия не имею, почему это происходит. Файл .dll определенно существует, я пытался переместить его в рабочий каталог, но все равно получаю ту же ошибку.

У кого-нибудь есть предложения о том, как я могу решить эту проблему?


person Muckle_ewe    schedule 26.05.2013    source источник
comment
Скопировать эту dll в папку с программой?   -  person wheybags    schedule 26.05.2013
comment
Я тоже пробовал это, и это тоже не сработало.   -  person Muckle_ewe    schedule 26.05.2013
comment
@Muckle_ewe Что случилось, когда ты это сделал?   -  person Daniel Gratzer    schedule 26.05.2013
comment
Вы запускаете свое приложение в VS или напрямую?   -  person maverik    schedule 26.05.2013
comment
Приложение запускалось из блоков кода.   -  person Muckle_ewe    schedule 26.05.2013
comment
@jozefg Я получаю точно такое же сообщение об ошибке. Откроется окно консоли, после чего в отдельном диалоговом окне появится сообщение об ошибке.   -  person Muckle_ewe    schedule 26.05.2013
comment
Либо у вас нет требуемой версии boost, либо что-то не так с настройками PATH/IDE.   -  person maverik    schedule 26.05.2013
comment
Я проверю обе эти возможности. Что мне кажется самым странным, так это то, что потоки ускорения работают в других проектах, поэтому проблема, безусловно, должна быть в какой-то конкретной настройке проекта. Я поиграюсь с настройками блоков кода и посмотрю, что там не так.   -  person Muckle_ewe    schedule 26.05.2013


Ответы (2)


Ваш компилятор в этом проекте динамически связывает библиотеку потоков boost,

Возможно, какие-то неправильные настройки в параметрах компоновщика или ваш код использует dllimport вместо «обычных» функций, которые разрешаются во время компиляции (dllimport разрешает функции во время выполнения - он не может найти их в требуемой библиотеке, поэтому вы получаете сообщение об ошибке).

Другие ваши проекты работают, потому что они статически связывают библиотеку потоков boost (предоставляют определения препроцессора corret boost для статической компоновки/компиляции и включают соответствующие файлы cpp/lib для библиотеки потоков), поэтому они включены в программу.

person Community    schedule 26.05.2013

Итак, я понял это. (еще раз обратите внимание, я использую блоки кода)

У меня все было настроено в глобальных настройках компилятора и компоновщика (чего, как я думал, будет достаточно). У меня все было настроено в настройках компилятора отдельных проектов, но проект, который работал, также имел некоторые дополнительные настройки в настройках компоновщика. Итак, у меня было все настроено, ЗА ИСКЛЮЧЕНИЕМ настроек в разделе «Проект» -> «Параметры сборки» -> «Каталоги поиска» -> «Компоновщик» с выбранным именем проекта, а не отладкой/выпуском. Я добавил... $(#boost.lib) ............\boost_1_53_0\stage\lib и теперь все в порядке.

Немного удивлен, что глобальные настройки компилятора не охватывают настройки отдельных проектов, но вот.

person Muckle_ewe    schedule 26.05.2013
comment
так... мой ответ помог или нет? На самом деле это не ответ, и я думаю, вам следует удалить этот пост и обработать его в своем вопросе под другим заголовком: F - person ; 27.05.2013