Вы не уточнили, является ли код VB COM-сервером вне процесса или клиентом, использующим COM-объект C++ inproc ,
Если код VB является клиентом, вы можете использовать его как исполняемый файл VB.Net, либо с ссылкой на COM-код, либо если вы не хотите, чтобы объект C++ регистрировался во время сборки, вы можете использовать инструмент TlbImp в библиотеке типов, чтобы создать управляемую сборку interop для ссылки из кода VB.Net.
Если ваш VB.Code является COM-сервером вне процесса обработки, вы должны пометить классы, которые хотите похватить через COM с атрибутом COMVisible, а затем использовать инструмент RegAsm для регистрации сборки с помощью COM.
Еще одна альтернатива заключается в том, чтобы скомпилировать код C++ как управляемый C++ и передать его из кода VB в качестве стандартной управляемой сборки. Преимущество такого подхода состоит в том, что вы полностью обходите слой взаимодействия COM и останетесь полностью в управляемом мире, который имеет определенные преимущества. с другой стороны, есть два недостатка: a) ваш код на C++ будет доступен только этому конкретному клиенту, если вы не поместите его в GAC, и b) для записи управляемого C++ wil потребуется немного наращивания. Я не думаю, что первый повлиял бы на вас, так как в вашем сценарии звучит так, что COM использовался только как удобный способ перейти от кода VB6 к более низкому уровню C++. Однако второй может дать вам некоторые проблемы.
Обновление: на основании вашего комментария, похоже, что на самом деле у вас есть код на C++, который вызывается непосредственно из кода VB, который, в свою очередь, вызывается через COM от других клиентов.
Если это действительно так, то моим предложением было бы перекомпилировать код VB6 как VB.Net (и вам, возможно, придется внести некоторые изменения в код, поскольку две платформы не совсем идентичны) и выставить его с помощью COMVisible в качестве COM-объекта и использовать P/Invoke для использования текущего кода на C++ (что довольно похоже на то, как его код VB6 потребляет). Не нужно будет перекомпилировать C++ как управляемый компонент C++.
Alex Вам может потребоваться решить проблему и задать несколько вопросов о перекодировке отдельных бит в VB.net. –