C как собрать программу в exe

Добрый день! Сразу, я — новенький
Возник вопрос: Я слышал, что возможно создать из сборки на C# стандартное приложение .exe. csc *.cs пробовал — компилит только консоли. Уважаемые ГУРУ, подскажите как это сделать или направьте меня в моем поиске к конкретным источникам. Заранее спасибо.

Pasha

Для: alex28AspCase
Ссылка скрыта от гостей

alex28AspCase

Спасибо за тзывчивость , однако, оталось непонятным какие именно файлы указывать в строке компиллятора? В сбоке-то их много.

Pasha

Для: alex28AspCase
Указывай все. А еще лучше — найди себе Visual Studio.

chm

в консоли msbuild [файл_проекта]
Статус Закрыто для дальнейших ответов.
Мы в соцсетях:

Похожие темы

  • Amogusik
  • 28.04.2023
  • Этичный хакинг и тестирование на проникновение

Ответы 0 Просмотры 381

  • Mark Klintov
  • 23.11.2022
  • Reverse engineering

Ответы 2 Просмотры 3 тыс.

  • szybnev
  • 16.03.2023
  • Этичный хакинг и тестирование на проникновение

Ответы 4 Просмотры 2 тыс.

Как скомпилировать программу на Python в .exe файл

  • useless
  • 17.09.2022
  • Этичный хакинг и тестирование на проникновение

Ответы 2 Просмотры 3 тыс.
Поделиться:

  • Форум
  • Developer Zone
  • Остальные языки программирования
  • .NET — программирование

На данном сайте используются cookie-файлы, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших cookie-файлов.

Источник: codeby.net

Всё в одном exe без зависимостей (статическая линковка в Qt 5.3.2)

Всё в одном exe без зависимостей (статическая линковка в Qt 5.3.2)

2014-10-31 в 0:59, admin , рубрики: Песочница, метки: mingw, qt5, qtcreator, static, Windows7, инструкция

Программы, собранные на Qt требуют множество дополнительных файлов, таких как:

Qt5Widgets.dll
Qt5Gui.dll
Qt5Core.dll
libwinpthread-1.dll
libstdc++-6.dll
libgcc_s_dw2-1.dll
icuuc52.dll
Это далеко не полный список возможных зависимостей.

Как от них избавиться? Нужна статическая сборка Qt.

Читайте также:
Должна ли быть у воспитателя рабочая программа

В интернете много разных статей на эту тему, но они мне не понравились по разным причинам. Поэтому я решил написать свою.

Протестировано для: Qt 5.3.2, компилятор MinGW 4.8.2 32bit, Windows 7 64bit. Написано на основе qt-project.org/wiki/How-to-build-a-static-Qt-for-Windows-MinGW но без использования Windows PowerShell.

Итак, нужно сделать следующее:

1. Скачать и установить обычную сборку Qt с официального сайта qt-project.org/downloads
Если Qt уже установлена, можно воспользоваться MaintenanceTool.exe

Как собрать проект Unity в исполняемый файл?


Важно в менеджере пакетов поставить галочку напротив MinGW 4.8.2 и Sourсe Components
Далее подразумевается, что Qt установлена в С:Qt
Если это не так, надо везде поменять пути на свои.

2. Проверить, что всё работает правильно
а) запустить Qt Creator, создать новый проект, собрать его, запустить;
б) закрыть Qt Creator и попробовать запустить *.exe отдельно от среды разработки;
в) убедиться в том, что программа требует кучу дополнительных библиотек;
г) закрыть всё, подумать о том, какая сложная штука — жизнь.
Теперь можно идти дальше.

3. Открыть файл С:Qt5.3Srcqtbasemkspecswin32-g++qmake.conf
На всякий случай можно сделать бэкап.
Добавить в конец файла (взято из windows-build-qt-static.ps1):
# Static
QMAKE_LFLAGS += -static -static-libgcc
QMAKE_CFLAGS_RELEASE -= -O2
QMAKE_CFLAGS_RELEASE += -Os -momit-leaf-frame-pointer
DEFINES += QT_STATIC_BUILD
CONFIG += static
# Static
Сохранить изменения и закрыть файл от греха подальше.

:: . check path.
set QtDir=C:Qt5.3static
set MingwDir=C:QtToolsmingw482_32
set QtSrcDir=C:Qt5.3Src
set CMAKE_INCLUDE_PATH=%MingwDir%i686-w64-mingw32include
:: Set a clean path including MinGW.
set PATH=%PATH%;%MingwDir%bin;%MingwDir%optbin
:: Force English locale to avoid weird effects of tools localization.
set LANG=en
:: Set environment variable QT_INSTALL_PREFIX. Documentation says it should be
:: used by configure as prefix but this does not seem to work. So, we will
:: also specify -prefix option in configure.
set QT_INSTALL_PREFIX=%QtDir%
:: Configure, compile and install Qt.
cmd /c «%QtSrcDir%configure.bat -static -debug-and-release -platform win32-g++ -prefix %QtDir% -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -no-openssl -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests» > log_cmd.txt
mingw32-make -k -j4 > log_make.txt
mingw32-make -k -j4 install > log_make_install.txt
pause
Проверить правильность всех путей. Это действительно важно.
Если всё правильно, сохранить и закрыть файл.

Читайте также:
Как сделать диск по умолчанию для установки программ

5. Открыть консоль cmd.exe и запустить make.bat
Этот процесс длится примерно час или два, в зависимости от скорости работы компьютера. Если всё завершилось через 5 минут или раньше, то что-то пошло не так.
В файлах log_cmd.txt, log_make.txt, log_make_install.txt можно почитать сообщения об ошибках.
У меня почему-то сначала компилятор не мог найти некоторые заголовочные файлы. Пришлось добавить это:
set CMAKE_INCLUDE_PATH=%MingwDir%i686-w64-mingw32include

6. Настроить Qt Creator.
Параметры -> Сборка и запуск -> Профили Qt -> Добавить
Выбрать файл С:Qt5.3staticbinqmake.exe
Название профиля: Qt (static)

Параметры -> Сборка и запуск -> Комплекты -> Добавить
Название: Static
Тип устройства: Desktop
Устройство: Локальный ПК
Sysroot: C:Qt5.3static
Компилятор: MinGW
Отладчик: Не задан
Профиль Qt: Qt (static)

Теперь в Qt Creator доступен комплект статической сборки.
Проекты -> Сборка и запуск -> добавить -> Static

7. В файле проекта (*.pro) добавить флаги
QMAKE_LFLAGS += -static -static-libgcc

Наверное, как-то можно эти флаги убрать в параметры Qt Creator, но у меня это не получилось.

Это всё. Осталось только пересобрать свой проект с новым комплектом. Теперь можно запускать скомпилированные exe-файлы на любом компьютере под управлением Windows 7 или Windows XP. На других системах не тестировалось.

Надо отметить, что в результате статической линковки размеры exe-файлов существенно возрастают. Например, изначально exe-файл занимал всего 1,38 МБ и требовал различных библиотек в сумме на 43,5 МБ. После описанных процедур он увеличился до 16,1 МБ. Но уже всё, что надо, у него есть.

Буду благодарен за отзывы, комментарии, сообщения об ошибках.

Источник: www.pvsm.ru

Справочник по C#

Если вы столкнулись с проблемой и хотите поделиться своим опытом, знаниями или у вас есть интересная статья с иностранного сайта, предложение новой темы, статью которую Вы хотите видеть в ближайшем будущем, расскажите нам об этом и мы обязательно поделимся этими знаниями со всеми. Возможно, для других ваши знания, опыт и советы окажутся очень ценными и помогут вовремя найти правильный выход или не совершить ошибок.
Так же если у вас есть предложение о сотрудничестве, пожелания, указать на нарушения сайта или просто сказать слова благодарности, все это вы можете сделать через форму обратной связи. Читать дальше

Читайте также:
Где в программе 1с находится оборотно сальдовая ведомость по счету

Внедрение DLL в EXE

1.Поставьте в свойствах вашей библиотеки — «внедренный ресурс».
2.Затем подпишитесь на событие , например в конструкторе формы:

//using System.Reflection; //using System.IO; public Form1()

В процессе выполнение, когда вашему коду понадобится сборка и он нигде не сможет ее найти, как раз сработает событие AssemblyResolve и нужно реализовать обработчик, т.е. что делать надо в таком случае, а делать надо вот что: извлечь сборку из ресурсов проекта и «предоставить» коду. Все!

private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) < //получаем имя сборки(короткое, без расширений) string shortName = new AssemblyName(args.Name).Name; //получаем ресурс из сборки по его имени, тут же помещая в созданный поток using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(shortName + «.dll»)) < //Считываем ресурс в массив байтов byte[] data = new BinaryReader(stream).ReadBytes((int)stream.Length); //Загружаем сборку из массива байтов в текущий домен приложения и возвращаем её return Assembly.Load(data); >>

Источник: csharpsourescode.blogspot.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru