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