Нишката за усилване на 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
Или нямате необходима версия за усилване, или нещо не е наред с настройките на PATH/IDE.   -  person maverik    schedule 26.05.2013
comment
Ще проверя и двете възможности. Това, което ми се струва най-странно, е, че нишките за усилване работят в други проекти, така че проблемът със сигурност трябва да е някаква специфична настройка на проекта. Ще си поиграя с настройките на кодовите блокове и ще видя дали има нещо нередно там.   -  person Muckle_ewe    schedule 26.05.2013


Отговори (2)


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

Вероятно някои неправилно конфигурирани настройки в опциите за свързване или кодът ви използва dllimport вместо „нормални“ функции, които се разрешават по време на компилиране (dllimport разрешава функции по време на изпълнение - не може да ги намери в необходимата библиотека, така че получавате грешка).

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

person Community    schedule 26.05.2013

Така че го разбрах. (забележете отново, използвам кодови блокове)

Бях настроил всичко в глобалните настройки на компилатора и линкера (което смятах, че ще е достатъчно). Бях настроил всичко в настройките на компилатора на отделни проекти, но проектът, който работеше, също имаше някои допълнителни неща в настройките на линкера. Така че имах всичко зададено, ОСВЕН настройките в Project -> Build Options -> Search Directories -> Linker part, с избраното име на проекта, а не debug/release. Добавих в... $(#boost.lib) ............\boost_1_53_0\stage\lib и сега всичко е наред.

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

person Muckle_ewe    schedule 26.05.2013
comment
така че... отговорът ми помогна или не? Всъщност това не е отговор и мисля, че трябва да изтриете тази публикация и да я обработите във въпроса си под друго заглавие :F - person ; 27.05.2013