Я использую boost для нескольких проектов C ++. Я недавно сделал обновление (с 1.33.1 до 1.36, скоро до 1.37), с тех пор я больше не могу запускать отладочные сборки.
Чтобы быть уверенным, что других проблем с проектом не осталось, я создал минимальный тестовый проект, который включает в себя только boost.thread, и использует его для запуска одного метода. Сборка релиза может быть запущена, сборка отладки не может, хотя Dependency Walker показывает, что все необходимые библиотеки найдены (это также означает, что требуемый MS Debug CRT находится в каталоге SxS).
При запуске я получаю только:
Die Anwendung konnte nicht richtig initialisiert werden (0xc0150002).
Klicken Sie auf "OK", умри Anwendung zudenden.
Что означает не что иное, как «не удалось инициализировать приложение». Интернет-исследования в основном привели к проблеме установки MS Office , которая рекомендует выполнить исправление WinXP.
Итак, кроме настройки восстановления (которая, я думаю, не поможет, поскольку я говорю о проблемах с debug-dll), есть какие-нибудь идеи?
Ах, прежде чем я забуду: Абсолютно один и тот же исходный код не приводит к ошибкам на сборочной машине (то есть, DLL могут быть зарегистрированы, значит выполнены). Так что это, очевидно, проблема с установкой, но поскольку библиотеки DLL есть , и обходчик зависимостей находит их, что еще я забыл?
( edit ) Ну, я еще не решил свою проблему, но благодаря deemok я на шаг вперед. Для уменьшения недопонимания приведу несколько пояснений ниже:
- Программа не запускается на разработчику -машина
- Я работаю с установленным VS2005 (это проект VC ++ 8)
- Я использовал boost-setup из BoostPro , скомпилировал все возможные версии сборки и дважды проверил их наличие (в противном случае я уже получал ошибки компоновщика во время сборки).
- и я дважды проверил любой угол конфигурации include / lib / bin, который могу себе представить - поскольку boost использует автоматическое связывание на окнах при специальном соглашении об именах, сборка или запуск не удастся выполнить с гораздо более понятное сообщение об ошибке.
- Я не могу использовать статическое связывание , так как boost.thread требует динамического связывания для проектов DLL (возможно, я могу возиться здесь, но, похоже, эта проблема возникает только на моей машине Я не хочу связываться с этим, так как я уверен, что у буст-парней была причина поставить эту проверку в первую очередь)
- Как я уже писал, я проверил с Dependency Walker, и он говорит, что все в порядке.
В настоящее время кажется, что это ошибка в boost-dll (возможно, неверный Manifest), проверим это.