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