dll — использовать COM в C ++ Builder

Я новичок в библиотеках COM, и я застрял на использовании COM DLL в моем приложении C ++ Builder (XE2). DLL зарегистрирована. Какие шаги позволяют мне создавать объекты, принадлежащие такой DLL, и вызывать их методы? Я имею в виду статически.

Я не мог найти учебник, хотя я видел разные способы:

  1. Компонент> Импортировать компонент> производит новый модуль-обертку … и что тогда?
  2. импортировать DLL с абсолютным путем (почему? она зарегистрирована в системе)

    #import "C:\Path\to\the\LIB1.dll" rename_namespace ("LIB1")
    

    … и что потом?

  3. использование CoCreateInstance… как именно? без импорта / включения?

В Visual C # я имею дело с этим, просто добавив ссылку и using!

Я очень смущен! Любая помощь приветствуется.

4

Решение

Я нашел способ (но скажите, есть ли лучшие):

  • Компонент> Импортировать компонент …> Импортировать библиотеку типов> выбрать библиотеку
  • Unit Dir Name = и снимите флажок «Создать компонентные обертки»
  • «Добавить модуль в проект MyProject.cbproj»> Готово
  • в клиентском классе> Файл> Использовать модуль …> выберите созданный модуль
  • в клиентском классе напишите этот код для использования COM DLL:

    CoInitialize(NULL); //Init COM library DLLs
    
    ICompany *company;
    
    HRESULT hr = CoCreateInstance ( CLSID_Company,
    NULL,
    CLSCTX_INPROC_SERVER,
    IID_ICompany,
    (void**) &company );
    if (SUCCEEDED (hr)) {
    //TODO here you can use your company object!
    //and finally release such resource
    company->Release();
    }
    
    CoUninitialize();
    

куда Company был оригинальный класс, представленный библиотекой DLL, которую я хотел реализовать.

Введение в COM — что это такое и как его использовать. очень помог мне

Заметка что это требует создание единиц * _TLB. * и * _OCX. *. Есть ли способ избежать этого?

1

Другие решения

Других решений пока нет …