Файлы, необходимые для запуска автономного EXE-файла, созданного с помощью wxWidgets

#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,

Для того, чтобы самостоятельно создать библиотеку:

  1. Откройте файл ${WXWIN}buildmswwx_vcN.sln.
  2. Выберите Сборка-> Пакетная сборка…
  3. Выберите весь проект с надписью «Debug / Win32»
  4. Нажмите «Построить».

Результирующие библиотеки будут находиться в каталоге $ {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 по какой-то причине не загружается.