#c #visual-studio-2019 #wxwidgets #vcredist
#c #visual-studio-2019 #wxwidgets #vcredist
Вопрос:
У меня возникли проблемы с созданием развертываемого двоичного файла для проекта C wxwidgets с использованием Visual Studio. После завершения сборки сгенерированный exe-файл, похоже, не устанавливается ни на один другой компьютер с Windows. Visual studio 2019 используется для создания библиотеки GUI с включенным в нее OpenCV. Я пытаюсь создать автономный исполняемый файл .exe, чтобы запустить его на любом другом компьютере с Windows, не устанавливая в него visual studio или opencv. Ранее при открытии исполняемого файла на другом компьютере выдавалась ошибка, связанная с отсутствием dll для OpenCV и wxwidgets. Итак, я скопировал необходимые DLL-файлы из каталогов OpenCV и папки wxwidgets bin. Теперь, когда я пытаюсь выполнить exe-файл, он показывает следующую ошибку. Пожалуйста, помогите мне решить эту проблему.
Комментарии:
1. Вы пытались скомпилировать с
-static
помощью flag?2. Спасибо. Нужно ли мне вносить какие-либо изменения в Visual Studio (для включения статического флага)?
Ответ №1:
Для приложений, созданных с использованием динамически связанных сред выполнения C / C ( /MD[d]
), требуются соответствующие распространяемые на целевом компьютере файлы x86 (32-разрядные) или x64 (64-разрядные) VC . Они могут быть установлены из последних поддерживаемых загрузок Visual C или могут быть включены вместе с приложением для локального развертывания.
Кроме того, убедитесь, что отправляете только сборки, не связанные с отладкой (конфигурация = выпуск).
MSVCP140D.dll VCRUNTIME140D.dll VCRUNTIME140_1D.dll ucrtbased.dll
'D'
Суффикс в именах этих отсутствующих библиотек DLL означает «Debug». Это библиотеки DLL среды выполнения debug C / C , которые используются сборками Configuration = Debug и устанавливаются как часть установки Visual Studio. Они должны использоваться во время разработки, но не развертываться иным образом, для определения того, какие библиотеки DLL следует распространять:
Отладочные версии приложений и различные библиотеки DLL Visual C debug не подлежат распространению.
Ответ №2:
Также кажется, что вы используете DLL-сборку wxWidgets и создаете OpenCV как DLL.
Если вы сами не создаете DLL, а ваше программное обеспечение представляет собой один автономный двоичный файл, подразделению будет лучше использовать статическое связывание wxWidgets и OpenCV.
И вдобавок к тому, что @dxiv, не все в MS CRT можно использовать статически связанным. Вот почему настоятельно рекомендуется установить MS CRT, создав программу установки, которая должна позаботиться обо всех этих зависимостях.
HTH.
Спасибо.
Комментарии:
1. Большое вам спасибо за ваши ценные предложения. Я попробую включить Opencv и wxwidgets статически. Мой другой вопрос заключается в том, что если вместо использования Visual Studio я использую любое другое программное обеспечение, могу ли я упростить этот процесс?
2. @Rahul, ты имеешь в виду любой другой компилятор? Или IDE? Процесс останется тем же — вам нужно будет создать установщик, который упакует все необходимые CRT и системные библиотеки. И, конечно, то же самое касается * nix / OSX, за исключением того, что в * nix установщики разные для разных дистрибутивов. И вам нужно будет Google, как создать установщик для OSX.
3. Спасибо @Igor. Это совершенно ново для меня. Вот почему я сталкиваюсь с некоторыми трудностями в этом. Я попытаюсь найти способ создать установщик для моей целевой ОС. еще раз спасибо.
4. @Rahul,, какая у вас целевая ОС?
5. Привет, Игорь, я ориентируюсь на ОС Windows 10. Я разобрался с проблемой. На самом деле мне не хватало распространяемых файлов Windows. Как только я установил VS redistributables 2019 и установил файлы библиотек OpenCV и wxWidgets в режиме выпуска, следовательно, exe-файл может быть запущен сейчас. Большое спасибо за вашу любезную помощь.