Какой вариант является лучшим выбором для "библиотеки времени выполнения" и "использования MFC" - PullRequest
1 голос
/ 07 марта 2012

Я хочу написать программу с VC ++ в VS 2008 .И я надеюсь, что моя программа может работать на WIN NT, XP, Vista и WIN 7 .И я надеюсь, что моя программа - это только файл .EXE .

Я не имею представления о параметре " Библиотека времени выполнения " и " Использование MFC "

комбинация, как показано ниже:

------------------------------------------------------------------------
|                               |Multi-threaded  |   Multi-threaded DLL|      
------------------------------------------------------------------------
|Use MFC in a Static Library    |        A       |         B           |
------------------------------------------------------------------------
|Use MFC in a Shared DLL        |        C       |         D           |
------------------------------------------------------------------------

У меня есть вопрос, если вы его получили, пожалуйста, сделайте мне одолжение.Спасибо.

1 . Четыре комбинации, какая из них является лучшим выбором для меня? A, B, C или D ? 2 . После тестирования при выборе B произойдет ошибка компиляции, почему? 3 . Когда я создаю новый проект или решение в VS, опция по умолчанию равна D , поэтому D - это лучший выбор для обычной программы?

:) В ожидании ответа префекта.

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Мое личное предпочтение - использовать MFC в качестве статической библиотеки, чтобы не было никаких других зависимостей.На момент написания MFC было принято использовать общие библиотеки DLL для экономии ресурсов, но в наше время гигабайтной оперативной памяти и терабайтных дисков не имеет значения несколько сотен килограмм.что при наличии обновления пакета обновления новая DLL может быть установлена ​​без замены приложения.

Если вы пишете DLL (не EXE-файл), которая использует MFC, то, вероятно, ей придется совместно использовать объекты MFCприложение и использовать цикл событий приложения.В этом случае вы вынуждены использовать MFC в качестве DLL.Я думаю, именно поэтому ваша комбинация "B" не работает.

0 голосов
/ 16 марта 2012

Чтобы получить действительно статически связанный исполняемый файл в MFC, вы должны выбрать A . Это скажет MFC статически скомпилировать свои классы, а также статически связать библиотеки времени выполнения (я полагаю, что это файл MSVCR.dll). Выбор B больше не разрешен компилятором, потому что он действительно бесполезен. Вы можете использовать эту опцию, только если вы хотите статически связать несколько библиотек (возможно, свою собственную), но вы хотите, чтобы все совместно использовали среду выполнения. У вас возникают проблемы с выделением памяти и другие глупости.

Итак, для вашего проекта выберите статическую ссылку, MFC и среду выполнения, вариант A.

...