Как я решаю, использовать ли ATL, MFC, Win32 или CLR для нового проекта C++?

Ваш вопрос довольно двусмысленный, но если вам нужно анимировать (скрыть) потрясающий скролл, вы можете обратиться к этому учебнику . В противном случае объясните свой пост, чтобы получить больше помощи в сообществе.

Приветствия

68
задан Community 23 May 2017 в 12:17
поделиться

5 ответов

зависит от ваших потребностей.

Использование CLR предоставит вам наиболее выразительный набор библиотек (всю платформу .NET) за счет ограничения вашего исполняемого файла требованием установки .NET Framework во время выполнения, а также ограничения вас Платформа Windows (однако все 4 перечисленные технологии являются только окнами, поэтому ограничение платформы, вероятно, наименее хлопотно).

Однако CLR требует от вас использовать расширения C ++ / CLI для языка C ++, так что вы в по сути, необходимо изучить некоторые дополнительные возможности языка, чтобы использовать это. Это дает вам множество «дополнительных возможностей», таких как доступ к библиотекам .net, полная сборка мусора и т. Д.

ATL и MFC несколько сложнее выбрать. Я бы направил вас на страницу MSDN для выбора , чтобы выбрать между ними. Хорошая вещь в ATL / MFC состоит в том, что вам не нужна платформа .NET, для установки должны быть установлены только среды выполнения VC / MFC.

Использование Win32 напрямую обеспечивает самые маленькие исполняемые файлы с наименьшим количеством зависимостей, но больше работать, чтобы написать. У вас меньше всего вспомогательных библиотек, поэтому вы пишете больше кода.

67
ответ дан 24 November 2019 в 14:17
поделиться

Win32 - это простой способ сделать это. Он утомителен, сложен в использовании и содержит множество мелких деталей, которые нужно помнить, иначе все закончится неудачей относительно таинственными способами.

MFC основывается на Win32, чтобы предоставить вам объектно-ориентированный способ построения вашего приложения. Это не замена для Win32, а скорее усовершенствование - оно выполняет большую часть тяжелой работы за вас.

System.Windows.Forms (что, как я полагаю, вы подразумевали под CLR) полностью отличается, но имеет большое сходство с МФЦ из своей базовой структуры. Это, безусловно, самый простой в использовании, но требует .NET Framework, который может или не может быть помехой в вашем случае.

Моя рекомендация: если вам нужно избегать .NET, тогда используйте MFC, в противном случае используйте .NET (в На самом деле, в этом случае я бы использовал C #, так как с ним гораздо проще работать).

21
ответ дан 24 November 2019 в 14:17
поделиться

Что касается C ++, я бы использовал WTL. Это облегченный вариант, и у вас будет немного (если таковые имеются) зависимости, что облегчит доставку и установку. Мне очень приятно, когда мое приложение состоит из одного EXE-файла, который будет работать в большинстве версий Windows, но это может вас не беспокоить.

Если вы решите перейти на .NET, тогда C # почти наверняка

Подробнее о WTL здесь:

http://www.codeproject.com/KB/wtl/wtl4mfc1.aspx

13
ответ дан 24 November 2019 в 14:17
поделиться

Мне было бы очень любопытно, почему вы вообще делаете это в C ++. Исходя из вашего краткого описания, C # звучит как гораздо более подходящий выбор.

Просто для пояснения, посмотрите на ссылку, которую вы дали для описания C ++ CLR. Ответы с самым высоким рейтингом отмечают (точно, на мой взгляд), что C ++ подходит для «ядра, игр, высокопроизводительных и серверных приложений» - ни один из которых не описывает то, что вы делаете.

MFC, ATL и т. Д. будет поддерживаться в том смысле, что да, вы сможете скомпилировать свое приложение в будущих версиях Visual Studio и запускать их в будущих версиях Windows. Но они не поддерживаются в том смысле, что в API или языке не так много новых разработок, как в CLR и C #.

8
ответ дан 24 November 2019 в 14:17
поделиться

С CLR все в порядке. Как и другие здесь, я бы предложил C #, но у вас есть причины придерживаться C ++, поэтому использование .NET Framework в несколько тысяч раз проще, чем возиться с ATL / MFC, если вы еще не знакомы с ними (IMO).

Возможно, стоит упомянуть, что если вы используете C ++ / CLR, то вы вообще не используете C ++. C ++ / CLR компилируется в CIL так же, как C #. Я никогда не использовал его сам, но считаю, что его цель - дать вам возможность скомпилировать устаревший код и сделать его легко доступным для нового кода .NET, а не позволять новому коду работать со старыми исполняемыми файлами C ++. Существуют и другие методы вызова нативного кода из .NET, которые, возможно, вам следует изучить.

4
ответ дан 24 November 2019 в 14:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: