Я работаю над приложением, в котором написано более нескольких dll, написанных на VB6. Код VB6 включает в себя COM dll и ocx control. Остальная часть кода находится на C ++ и C #. Передо мной была поставлена задача сделать код приложения совместимым с 64-битными архитектурами. Для кода C / C ++ доступно множество справочных материалов, так что проблем нет. Но нелегко переписать весь этот код vb6 в .net или другой язык, чтобы сделать его совместимым с 64-битным. Я также не понимаю всю основную логику, поэтому просто предположим, что переписывание не подлежит обсуждению.
С другой стороны, мы все знаем, что dll VB6 не будет работать в 64-битной среде. Итак, каковы мои варианты.
1) преобразовать каждую dll в EXE-файл, который будет загружен в 32-битной версии, и он может взаимодействовать с остальными 64-битными приложениями через COM-интерфейсы. Предвидите ли вы какие-либо проблемы с этим подходом?
2) Я редактирую реестр и загружаю все библиотеки VB6 вне процесса, заставляю их загружаться в dllhost.
3) Создайте один 32-битный exe-файл, отошлите все эти VB6-библиотеки в этот exe-файл и загрузите этот exe-файл в 32-битное адресное пространство, и 64-битная часть моего приложения будет связываться с 32-битным exe.
Основная проблема, которая приходит мне в голову во всех вышеупомянутых подходах, состоит в том, что делать с элементами управления OCX ????
Есть идеи?
Если нет новых идей, чем из вышеперечисленных вы предпочтете и почему?