Используйте MFC в статической библиотеке - PullRequest
2 голосов
/ 16 февраля 2012

Я создал приложение MFC с опцией «Использовать MFC в статической библиотеке».

Я создаю установку для своего приложения с помощью Installshield. Какие файлы зависимостей или «модули слияния» я должен добавить в installshield?

Необходимо ли добавлять модули слияния "Microsoft C ++ Runtime Library" или "Microsoft Visual C ++ MFC"?

Ответы [ 2 ]

7 голосов
/ 16 февраля 2012

Статическое связывание означает, что foo.lib был встроен в myapp.exe во время фазы компоновщика.Никакой зависимости от foo.dll не существует, и ее не нужно распространять.Вы также должны понимать, что хотя статическое связывание облегчает развертывание, на самом деле это считается уязвимостью безопасности, потому что, если в foo.lib / foo.dll (в данном случае MFC) обнаружен эксплойт, то Microsoft не сможет исправить ваше приложение путем обновления версиив кеше WinSXS.Вам будет необходимо включить последнюю версию Redist на вашем компьютере сборки, перестроить и повторно развернуть.

Я настоятельно рекомендую создать виртуальную машину с базовым снимком, который представляет самую старую ОС, которую вы хотите поддерживать, а затемтестирование вашего установщика там.Это поможет выявить недостающие зависимости, которые затем можно будет устранить с помощью таких инструментов, как Dependency Walker, ILDasm / .NET Reflactor и ProcessMon.

1 голос
/ 16 февраля 2012

По крайней мере, если память не работает, нет.Если вы используете MFC в статической библиотеке, вам также необходимо статически связываться со стандартной библиотекой.Если вы не добавили какую-либо другую зависимость от какой-либо другой библиотеки DLL, у вас должен быть автономный исполняемый файл.

Вы можете / могли бы проверить с помощью обходчик зависимостей , чтобы быть уверенным, если хотите,

...