Проблемы с использованием .NET DLL в Borland C ++ Builder 4 - PullRequest
1 голос
/ 15 апреля 2009

Я создал вызываемую библиотеку COM в C # .NET 2.0 и создал TLB из сборки с помощью инструмента .NET regasm.

В Borland C ++ Builder 4.0 я захожу в Project-> Import Type Library-> и найдите там библиотеку типов моей DLL и нажмите «ОК», чтобы импортировать ее.

BCB создает файл HardwareCheck_TLB.cpp & HardwareCheck_TLB.h.

В файле cpp проекта я хочу использовать поставленную мной DLL: #include "HardwareCheck_TLB.h" на вершине.

Затем в коде, если я пытаюсь объявить объект этого типа в коде: IHardwareCheck hc = new IHardwareCheck ();

Я получаю следующую ошибку компилятора: [Ошибка C ++] Unit1.cpp (22): E2352 Невозможно создать экземпляр абстрактного класс 'IHardwareCheck'. [Ошибка C ++] Unit1.cpp (22): класс E2353 «IHardwareCheck» является абстрактным из-за '__stdcall IHardwareCheck :: IsExpress (wchar_t * *, TOLEBOOL *) = 0 '.

У кого-нибудь есть идеи, как избавиться от этой ошибки?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 08 мая 2009

COM clasess не может быть создан с использованием new. Вам необходимо использовать системный вызов CoCreateInstance (см. MSDN) или какую-либо оболочку, предоставленную Borland (например, ту, что упомянута zer0_ring).

0 голосов
/ 23 апреля 2009

Он должен генерировать некоторые типы TCoClassCreatorT <>, которые вы можете сделать

CoHardwareCheck::Create(&hc)

Возможно, вам придется взглянуть на tlibimp.exe, который Borland распространяет вместе со своими продуктами. Я прошел через это раньше с этой программой, но никогда не мог генерировать классы Co, возможно, вам повезет больше.

...