Создание экземпляра COM-объекта в C ++ / CLI - PullRequest
2 голосов
/ 25 ноября 2010

Я новичок в Managed C ++ / Cli;У меня есть одна устаревшая COM DLL, и я импортировал DLL в класс C ++ / CLI, но я не уверен, как создать экземпляр объекта COM и использовать его.

Кто-нибудь может помочь с этим?

Ответы [ 2 ]

2 голосов
/ 25 ноября 2010

Существует несколько способов доступа к COM-объектам из C ++ / CLI.

Самый простой способ - позволить среде выполнения .Net создать управляемую оболочку для COM-объекта, как описано в natorion вего ответ.Чтобы это работало, вам нужно сгенерировать сборку взаимодействия в Visual Studio или с помощью команды tlbimp.exe.Это то же самое, что и в других языках .Net, таких как C # и VB.Net.

Другой способ - использовать директиву #import для создания оболочки native .Это лучший способ, если в COM-объекте используется много собственных структур, которые трудно упаковать в .Net, или если вам необходимо контролировать время жизни объекта.

IYourComObject obj;
obj.CreateInstance("YourComObject"); 

(Существуют и другие перегрузки CreateInstance)

Третий способ - игнорировать все созданные вручную оболочки, создавая объект вручную.Это самый продвинутый и сложный способ полного контроля над вами.

CoCreateInstanceEx(__uuidof(yourcomobject), NULL, CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER, NULL, 1, &instance)
2 голосов
/ 25 ноября 2010

Если он правильно зарегистрирован, просто попробуйте:

Type typeOfCOMObject = Type.GetTypeFromProgID("COMProject.COMClass");
object instanceOfCOMObject = Activator.CreateObject(typeOfCOMObject);

Затем используйте приведение или отражение для доступа к методам объекта.

...