В настоящее время мы проводим бета-тестирование приложения Windows, созданного с использованием новейшей Visual Studio на C ++ и работающего на Windows 10. Приложение динамически связывает библиотеки VC ++ (статическое связывание для нас не вариант).
На 75% машин наших тестировщиков (включая все наши машины разработки) приложение работает сразу после установки, но с некоторыми другими оно не запускается и завершается сбоем (предположительно) в процессе загрузки динамических системных библиотек (поскольку он не вызывает никаких исключений, которые могли бы записать мини-дамп, как при ошибках времени выполнения).
- У некоторых из этих пользователей были ошибки об отсутствующих библиотеках времени выполнения, которые были устранены после установки последней распространяемой версии VC ++ 2017Однако приложение все равно не запускается.
- Один пользователь также проверил зависимости библиотеки с помощью инструмента Зависимости (https://github.com/lucasg/Dependencies),, но его результаты не показывают ничего странного - нет очевидной разницы между выводом нарабочая машина и его собственный.Есть несколько вопросительных знаков (см. Скриншот: отсутствующие модули, как показано в Зависимости ) рядом с некоторыми подзависимостями UCRT, но они также присутствуют на рабочих машинах, поэтому я предполагаю, что они являются ложными срабатываниями.
- Я также пытался развернуть соответствующие 40 библиотек UCRT и VC ++ в качестве локального развертывания приложения рядом с исполняемым файлом, но он все равно не открывался на затронутых машинах (возможно, я пропустил некоторые соответствующие, или на них все еще ссылалисьиз папки System32)
Как бы вы отладили такую проблему, если мы не можем воспроизвести ее локально (она работает из коробки на двух совершенно новых устройствах со свежей Windows10 установить и без среды сборки) и очень мало информации о том, что может быть не так с вызовами библиотеки?