2013-05-26 4 views
2

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

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

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

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

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

+0

Скопируйте эту DLL в папку программы? – wheybags

+0

Я тоже пробовал, и это тоже не сработало. –

+0

@Muckle_ewe Что случилось, когда вы это сделали? – jozefg

ответ

1

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

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

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

0

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

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

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

+0

так ... мой ответ помог или нет? На самом деле это не ответ, и я думаю, вы должны удалить это сообщение и обработать его в своем вопросе под другим заголовком: F –

Смежные вопросы