У меня есть несколько библиотек DLL на основе ATL / COM, на которых я использовал Visual C ++ 6.0. Мне требуется пара "старых" вещей из сгенерированных DLL:
(1) Они должны быть совместимы с проектами, разработанными в Visual Basic 6.0 (старый VB6, категорически не VB.Net).
(2) Они должны быть совместимы со старыми операционными системами - минимум Windows 98 SE. Чтобы быть ясным, я имею в виду, что они должны работать на таких ОС, а не на то, что мне нужно было бы иметь возможность разрабатывать их на машине, на которой работает такая ОС.
Мне надоела Visual Studio 6.0. Преобразование в Dot Net (или любое другое подобное изменение) в настоящее время исключено, поэтому я должен продолжать использовать VB6. Но могу ли я переключиться на новую версию Visual Studio C ++ с минимальными усилиями (т.е. с минимальным перекодированием, если оно вообще требуется)?
Если да, то есть ли какие-то "подводные камни", которых я должен остерегаться?
Спасибо.
Ответ 1 · рейтинг 2 · Charles Boyung
Различные версии VS.Net могут до некоторой степени открывать более старые проекты .Net, но ни одна из них не может открыть что-либо до .NET, что включает 6.0 на любом языке.
Вы должны иметь возможность создать новый проект C ++ в одном из приложений .Net VS и перестроить там свой проект C ++, и он должен работать, потому что неуправляемый код C ++ не требует среды выполнения .Net (и он по-прежнему компилируется в собственный машинный код ), но я уже давно не разбираюсь в C ++, поэтому я не уверен на 100%, что он будет работать.
Ответ 2 · pestilence669
Да, но это слегка болезненно. Вот почему большинство магазинов придерживаются VC6. Признаюсь, я не тестировал COM DLL в Windows 98, но еще в NT 4.0 с Visual Studio 2005.
Хочу подчеркнуть, что здесь нет минимальных усилий. В зависимости от того, как написан ваш код, преобразование может быть довольно болезненным. В одном проекте поиск и замена исправили 9 из 10 проблем. YMMV. Возможно, вам придется переписать часть низкоуровневой сантехники COM.