Как конвертировать VB6 в Visual C ++ нативный код? - PullRequest
4 голосов
/ 13 октября 2010

У нас есть клиент, который хочет преобразовать кучу проектов VB6 в собственный код VC ++. Я хотел бы знать, есть ли какие-либо инструменты для такого преобразования.

Мы попробовали http://vbto.net/,, который конвертирует, но генерирует тонны ошибок компиляции. Инструмент создает все проекты cpp как «exe», в то время как многие исходные проекты VB6 - «activex dll».

Как проект VB6 сопоставляется с проектом VC ++? Например, сопоставляет ли «activex dll» проект ATL vc ++? На какие вещи мы должны обратить внимание? Если вы можете поделиться своим опытом, мы будем очень благодарны.

(да, наш первый ответ - предложить преобразование в VB.NET/C#, но программа должна работать на машинах, на которых не установлена ​​платформа .NET, а также вызывать методы в kernel32.dll)

Ответы [ 2 ]

0 голосов
/ 13 октября 2010

Вы можете рассмотреть возможность использования инструмента миграции, способного обработать полное преобразование.См. Какие типы шаблонов я могу применить в коде, чтобы упростить перевод на другой язык программирования? .

Используемый механизм DMS имеет полные парсеры для VB6 и Visual C ++ и можетприменять правила преобразования, которые отображают синтаксис поверхности VB6 в синтаксис поверхности Visual C ++.

Кто-то должен написать правила перевода, и их нужно написать много;вам нужен один для каждой языковой конструкции и контекста, в котором это может произойти.Это означает, что в вашем случае вам потребуются специальные правила для создания перевода в виде DLL, а не .exe, если это реальное требование.Написание таких правил сложнее, чем кажется, в основном из-за числа, которое нужно написать, обычно порядка 1000-2000;это не для слабонервных.Но он может производить очень надежных переводчиков (подробности читайте в ответе по ссылке).

Вы не сказали, что такое "куча кода".В меньших масштабах вы можете использовать больше специальных подходов (ручной перевод, исправление вывода плохого переводчика (например, того, который вы обсуждали) и т. Д.).При достаточном масштабе автоматизированное преобразование является эффективным подходом.

0 голосов
/ 13 октября 2010

ты не можешь. может быть, вы можете конвертировать код vb6 в vb.net. затем вы можете легко преобразовать его в c # или управляемый c ++ (все .net langs компилируются в msil, поэтому их можно легко преобразовать в другой .net lang с помощью отражателя и т. д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...