Почему приложение не может найти DLL «boost_thread-vc100-mt-1_46_1.dll»? - PullRequest
0 голосов
/ 18 июля 2011

Вопрос: почему приложение не может найти библиотеку DLL «boost_thread-vc100-mt-1_46_1.dll», если библиотека фактически установлена ​​правильно, а другие приложения успешно ее используют?

Проблема: при запуске экземпляра моего приложения появляется следующее сообщение об ошибке: «Программа не запускается, поскольку на вашем компьютере отсутствует boost_thread-vc100-mt-1_46_1.dll. Попробуйте переустановить программу, чтобы решить эту проблему. ”

Несколько причин, почему это сообщение смущает меня:

  1. dll присутствует в C: \ Program Files (x86) \ boost \ boost_1_46_1 \ lib
  2. Другой проект с аналогичными настройками работает правильно и создает объекты boost :: thread успешно
  3. Когда я удаляю код, который создает объекты boost :: thread из моего приложения, появляется ошибка сообщение не появляется.

Дополнительные детали: Я занимаюсь разработкой приложения на C ++ / CLI с использованием MS VS 2010 с включенным CLR.

Я использую библиотеку Boost Thread (версия 1.46.1).

Следуя советам относительно сообщений об использовании Boost Thread и C ++ / CLI, я добавил следующий код в один из моих заголовочных файлов:

#if defined(_MANAGED)
#define BOOST_USE_WINDOWS_H
#endif

#define BOOST_THREAD_USE_DLL

#include "boost/thread.hpp"
namespace boost {
    struct thread::dummy {};
}

#pragma warning(push) 
#pragma warning(disable:4793) 
#include "boost/thread/mutex.hpp"
#pragma warning(pop)

#include "boost/thread/locks.hpp"

Я ценю любой совет, который вы можете дать. Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 мая 2012

Вам необходимо добавить расположение библиотек повышения к пути поиска компоновщика.

Щелкните правой кнопкой мыши проект C ++, который показывает ошибку компоновщика, выберите Свойства.Перейдите в Linker -> General, затем на правой панели вы увидите Дополнительные каталоги библиотек.Укажите путь к папке, содержащей boost_thread-vc100-mt-1_46_1.dll - обычно эта папка будет содержать все ваших расширенных библиотек и будет выглядеть примерно так: D:\Program Files\boost\boost_1_49_0\stage\lib.

Теперь компоновщик будет искать эту папкупри поиске библиотек, и все должно работать.

0 голосов
/ 20 июля 2011

Нахождение в C:\Program Files(x86)\boost\boost_1_46_1\lib мало помогает.

Он должен быть в пути поиска DLL.

Другие приложения, использующие boost, вероятно, имеют локальную копию DLL вместе с основным исполняемым файлом.

...