Когда я сделал это, я начал с очень простого, базового компонента для сортировки COM. Также я использовал скрипт клиента в начальной разработке.
Я не использовал Visual Studio, а вместо этого текстовый редактор для кода .NET. Я вставил GUID для сборки и для интерфейсов и отметил интерфейсы для AutoDispatch.
using System;
using Interop=System.Runtime.InteropServices;
namespace Whatever
{
[Interop.Guid("xxxxxxxx-9120-4283-b972-changethis05")]
[Interop.ComVisible(true)]
[Interop.ClassInterface(Interop.ClassInterfaceType.AutoDispatch)]
public partial class MyClass :
...
}
Я убедился, что у моего класса есть конструктор по умолчанию (без аргументов).
Я запустил regasm /codebase
вручную, из командной строки, указав сборку .NET.
Я вручную написал javascript для создания экземпляра объекта.
Когда все было не так, я проверял ProgId с помощью OleView.exe.
Как только у вас будут работать самые базовые вещи, постепенно увеличивайте сложность, пока не получите рабочее решение.
Вы также можете использовать подход с другого направления; от клиента. Сборки .NET, такие как System.Random, помечаются для взаимодействия COM при установке .NET, поэтому вы можете использовать их для проверки правильности вашего подхода в C ++. Создание System.Random ProgId - это что-то вроде «привет, мир» C ++ - to-.NET-via-COM. Если это удастся, то вы знаете, что основной подход в C ++ - это звук.