#wxwidgets
#wxwidgets
Вопрос:
Я создал EXE-файл с помощью wxWidgets 3.1.4 в Visual Studio 2017.
Я могу запустить EXE-файл из Visual Studio, но не за пределами Visual Studio.
Я получаю сообщение:
Необработанное неизвестное исключение; завершение работы приложения.
EXE встроен в Release / x86.
Я попытался скопировать библиотеки DLL выпуска wxWidgets в ту же папку, что и EXE, а также файлы из vc_redist_x86, но я все еще получаю ошибку.
Спасибо за вашу помощь
Комментарии:
1. @MaximeVerner, можете ли вы запустить отладочную версию приложения и посмотреть, где происходит сбой?
2. Файл ресурсов отсутствовал, он присутствует вместе с файлами .cpp, но отсутствует в папке выпуска. Я бы не увидел его в Debug, поскольку файл присутствует, но спасибо.
Ответ №1:
Это была ошибка приложения, файл ресурсов отсутствовал.
Я удалил папку выпуска, перестроил и скопировал файл ресурсов, и EXE запускается.
Библиотеки DLL для выпуска находятся в моем %PATH%, и я установил vc_redist_x86.exe так что я предполагаю, что эти две вещи позволяют запустить мой автономный EXE-файл.
Комментарии:
1. вам следует подумать о создании статической сборки вашего приложения. Если вы не создаете дополнительные библиотеки DLL…
2. Не уверен, как, я использую готовые двоичные файлы wxWidgets. Статическая сборка включает в себя перестройку wxWidgets, верно?
3. @MaximeVermier, просто создайте его самостоятельно. Какой компилятор вы используете? Его очень легко создать…
4. Я использую Visual C . Странно то, что даже после удаления всех распространяемых файлов Visual C исполняемый файл все равно запускается.
Ответ №2:
@MaximeVermier,
Для того, чтобы самостоятельно создать библиотеку:
- Откройте файл ${WXWIN}buildmswwx_vcN.sln.
- Выберите Сборка-> Пакетная сборка…
- Выберите весь проект с надписью «Debug / Win32»
- Нажмите «Построить».
Результирующие библиотеки будут находиться в каталоге $ {WXWIN} lib.
Теперь все, что вам нужно, это изменить файл проекта для вашего приложения и перестроить.
Тогда вам не понадобятся библиотеки DLL wxWidgets.
Комментарии:
1. Спасибо, Игорь, я должен попробовать это.
2. @MaximeVernier, дайте нам знать, если у вас возникнут какие-либо проблемы с этим. Вы также можете попытаться статически связать CRT, но для этого потребуется изменить все проекты (wxwidgets и ваш). Итак, я бы посоветовал вам этого не делать. Кроме того, CRT может измениться в будущем.
3. Успешно собран Debug / Win32. Я изменил проект следующим образом: Каталоги VC : добавлены %WXWIN%lib vc_lib и LinkerInput Дополнительные зависимости: добавлены wxbase31ud.lib и wxmsw31ud_core. библиотека, но exe по-прежнему привязан к библиотекам DLL.
4. @MaximeVernier, проверьте
minimal
пример решения проекта по умолчанию. Ваше собственное решение должно иметь 2 настройки, особенно если вы скопировали его сminimal
. Выберите соответствующую конфигурацию и перестройте.5. Я создал minimal и увидел, что он не зависит от DLL. Я попытался скопировать папку minimal в другое место, настроить расположение core и base в .sln, но проект minimal по какой-то причине не загружается.