C ++: как отправить один исполняемый файл без mingwm10.dll - PullRequest
1 голос
/ 14 апреля 2011

Я создаю небольшую кроссплатформенную программу с C ++ / wxWidgets.Используя статические ссылки, мне удалось получить только один файл .exe для Windows.Однако для этого по-прежнему требуется небольшой (18 КБ) файл mingwm10.dll

Хотя я могу просто распространять свое приложение с помощью этой dll, я бы предпочел, чтобы оно было "внутри" .exe ... Возможно ли это?

Спасибо

Ответы [ 2 ]

1 голос
/ 17 апреля 2011

Если вы используете скрипт configure для компиляции wxWidgets, добавьте --disable-threads.Это установит wxUSE_THREADS в 0, класс wxThread и весь код, который зависит от потоков, не будет скомпилирован.Автоматически mingwm10.dll не будет связан.

0 голосов
/ 14 апреля 2011

«Один EXE-файл, включающий все файлы проекта», называется сценарием установки.Рассмотрим что-то вроде InnoSetup или MSI.

Использование собственной установочной DLL для кода первого использования теоретически возможно, но крайне уродливо.Это выглядит так: вы добавляете DLL (в архиве, если это возможно) в EXE как ресурсы.При запуске вы пытаетесь загрузить DLL;если вы не можете, вы берете его из ресурсов и размещаете где-нибудь.И это сломается при отсутствии прав администратора.И автоматическое повышение привилегий не будет работать (это работает для файлов установки).И вы должны быть очень осторожны, чтобы ничего не вызывать в DLL перед установкой.Как я уже сказал, очень, очень некрасиво.

...