Visual C ++ 2010 и собственный исполняемый файл - PullRequest
3 голосов
/ 25 декабря 2010

родной exe! что означает, что моя программа может легко выполняться без каких-либо требований? даже если я использую классы .net?

Вы знаете, что я хочу написать программу, которая так легка, и я не люблю использовать C # или любой другой язык программирования .net, потому что всем им нужен .net-framework 4.5.

Просто подумайте, что для программы размером 2,5 МБ требуется +250 МБ .netframework.

Новое обновление - 01.12.2016:

Это было почти 4 года назад, когда я задал этот вопрос. Как вы знаете, Dotnet Native объявлено. Это интересная функция, которая компилирует IL в собственный код.

Компиляция приложений с использованием .NET Native

.NET Native - это технология предварительной компиляции для сборки и развертывания. Приложения для Windows, которые включены в Visual Studio 2015. Это автоматически компилирует версию выпуска приложений, написанных на управляемый код (C # или Visual Basic) и предназначенный для .NET Framework и Windows 10 для родного кода. Как правило, приложения, предназначенные для .NET Фреймворки скомпилированы на промежуточный язык (IL). Во время выполнения Компилятор Just-in-Time (JIT) переводит IL в собственный код. В наоборот, .NET Native компилирует приложения Windows непосредственно в собственный код. Для разработчиков это означает:

  • Ваши приложения будут обеспечивать превосходную производительность нативного кода.
  • Вы можете продолжить программирование на C # или Visual Basic.
  • Вы можете продолжать пользоваться ресурсами, предоставляемыми .NET Framework, включая библиотеку классов, автоматическую память управление и сборка мусора, а также обработка исключений.

Ответы [ 3 ]

2 голосов
/ 25 декабря 2010

В последний раз я проверял, что ни одна из платформ .NET не имеет 250+ МБ!Да, автономный установщик для .NET Framework 3.5 с пакетом обновления 1 (SP1) занимает 231 МБ, но он содержит версии .NET 2, 3 и 3.5 sp1 для x86 и x64.

Вы должны прочитать это http://www.smallestdotnet.com для получения подробной информации о размерахразличных версий инсталляторов.

Теперь к вашему вопросу:
Да, это немного раздражает, когда ваши клиенты устанавливают большой фреймворк, даже 20-40 МБ раздражают.В .NET преимущество заключается в простоте программирования (по моему мнению) по сравнению с другими вариантами Native.

Ваши собственные варианты:
MFC - Вам нужно только установить установленное время выполнения VS, которое составляет 1-2 МБ и обычно устанавливается на более новые ПК.Кроме того, вы можете отправлять ваше приложение с библиотеками MFC, упакованными в dll, который снова <2MB </p>

Торговля здесь заключается в том, что вам нужно программировать на C ++, в целом библиотеки представляют собой очень тонкий слой по сравнению с нативными библиотеками.,и люди имели резкое мнение о МФЦ.Я только что попробовал это.

Win32 API - Это все, что нужно, и довольно сложно, вы можете использовать C или C ++, но вам действительно нужно много знатьо Win32 API и о том, как работает сама Windows (такие вещи, как сообщения Windows, hwnds и т. д.) Это не весело, поверьте мне.Но во время развертывания вам не потребуются никакие внешние библиотеки.

Существует множество дополнительных параметров , см. Здесь:
Параметры разработки собственных приложений Windows
https://stackoverflow.com/questions/2711599/what-programming-language-should-i-use-to-create-small-native-windows-applicatio

Вот некоторые ссылки на MFC, которые могут помочь:
Хотите узнать Программирование Windows, некоторые предложения?
Как мне решить, стоит лииспользовать ATL, MFC, Win32 или CLR для нового проекта C ++?
C ++ MFC против .NET?
https://stackoverflow.com/questions/557114/stick-with-mfc-or-go-to-net

1 голос
/ 25 декабря 2010

Увы, почти все требует загрузки библиотеки времени выполнения, и даже если она у вас установлена, вам нужно будет загружать обновления для них почти постоянно.Даже приложения Microsoft C ++ в настоящее время поставляются с обновлениями безопасности, которые должны иметь , которые должны быть установлены, если вы скомпилировали свое приложение с ними.

Но ... есть своего рода решение.Если вы используете C ++, у него есть функция, позволяющая скомпилировать в конечное приложение только то, что вы используете.Обычно для этого требуется соединение со всеми библиотечными библиотеками, но если вы статически связываетесь с библиотекой, вы получите единственный .exe, который настолько мал, насколько это возможно, и вам не понадобятся никакие библиотеки DLL (как и весь кодсодержащиеся в библиотеке будут скомпилированы в .exe).

Преимущества спорны по сравнению с dll, но, поскольку MS в значительной степени нарушила идею общих dll в .NET (то есть вы практически должны поставитьвсе общие библиотеки в той же директории, что и ваше работающее приложение, что дает вам кошмар в обслуживании, если у вас есть общие библиотеки, распространяемые по всем вашим приложениям), тогда нет больше никакой разницы.Статическое связывание постепенно возвращается и звучит так, как вы хотите.

Для современной разработки на C ++ вы, вероятно, захотите взглянуть на Qt вместо MFC.Его много удобнее в использовании и он кроссплатформенный, поэтому вы можете запускать приложения Qt на своих платформах Android или Linux, а также в Windows.

1 голос
/ 25 декабря 2010

вы можете создать собственный exe-файл, используя c ++ проекты Win 32.

...