2015-08-28 5 views
1

Я использую фреймворк под названием EzNameSpaceExtension для нескольких расширений пространства имен Windows, которые поддерживаю.Зависимость MFC от статической библиотеки

Рамка поставляется в виде нескольких статических библиотек, а заголовки автоматически связывают соответствующую библиотеку (выпуск/отладка) (MBCS/Unicode) (версии Visual Studio).

Недавно я обновился до Visual Studio 2015 и (поскольку их поддержка настолько не отвечает) отредактировали заголовки, чтобы включить библиотеку VS2013 в сборку VS2015.

Включает в себя библиотеку, но теперь ссылка пытается связать mfc120.lib с сборкой (которая больше не находится в библиотеках сборки).

Предполагая, что я никогда не слышу от людей поддержки поставщика (последний вопрос, который я задал, занял 6 месяцев, чтобы получить ответ), является ли зависимость mfc120 чем-то, что может быть заменено новой библиотекой MFC? Если да, то какие флагов связывания мне нужны и каковы шансы, что код будет функционировать?

ответ

0

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

Проблема также в том, что ссылка на компоновку некоторого экспорта может совпадать, но бинарная компоновка структур могла быть изменена.

Библиотеки, которые у вас есть, должны соответствовать режиму компилятора и отладки/выпуска, если они не только определяются точками входа в чужую DLL.

+0

Я полагал, что у них была зависимость, но я не понимаю, почему. Если в библиотеке используется функция времени выполнения C, до тех пор, пока соглашение о вызове не изменяется, зачем вообще нужна зависимость. BTW, продавец, наконец, ответил и теперь переходит к версии VC2015, но в то же время мне пришлось вернуться к VC2013. – gazillabyte

+0

Вызов конвенции еще не все. Шаблоны могут измениться. Обработчики и помощники для исключений могут быть частью CRT и могут меняться ... – xMRi

+0

Если это не так много работы, вы можете инкапсулировать библиотеки в библиотеке COM и компилировать/ссылаться на VS2013. Предоставление необходимой функциональности, поскольку COM-объекты могут решить проблему зависимости не только с VS2015, но и с другими версиями, которые еще не выпущены. – Bart

0

Является ли библиотека развернутой в качестве источников? Если это так - перекомпилируйте его на VS2015. Если нет - ваш лучший вариант - построить все свое решение на VS2013. Вы все еще можете сделать это из ID2 VS2015 (свойства проекта/свойства конфигурации/общий/платформенный набор инструментов -> 2013), если у вас все еще установлен VS2013. Вы сможете сохранить преимущества обновления IDE до 2015 года, но потеряете преимущества обновления компилятора.

Технически возможно иметь дублирующую зависимость от версий MFC (и, соответственно, CRT и, возможно, OpenMP и т. Д.), Но я бы посоветовал это сделать.

+0

Библиотеки не мои, я лицензирую их как библиотеки, а не как источник. Поэтому перекомпиляция не является вариантом. – gazillabyte

+0

Можете ли вы спросить продавца о версии vs2015? Если нет, создается ли в наборе инструментов vs2013 опция? –

Смежные вопросы