У меня есть набор библиотек, написанных на Delphi.NET (.NET 1.1), которые я хочу использовать в своем приложении Win32 (Delphi). Для проблем, связанных с производительностью, я решил следовать COM-маршруту.
Иногда, после перестройки DLL, когда я пытаюсь создать экземпляр объектов, доступных через COM, приложение Win32 зависает при вызове CreateComObject
. Как я могу решить эту проблему?
Чтобы выставить библиотеки Delphi.NET через COM, я добавляю следующие атрибуты над каждым замедлением класса:
[Comvisible(true)]
[Guid('some guid')]
[ClassInterface(ClassInterfaceType.AutoDual)]
После компиляции DLL я создаю файл TLB.pas
, который содержит определения для всех общедоступных и видимых COM-классов и интерфейсов в DLL. Этот файл позволяет мне более легко использовать COM-объекты в моем приложении Delphi Win32. Наконец, я регистрирую .dll
и .tlb
flie, используя regasm
.
Я попытался отменить регистрацию и запустить приложение Win32, которое ссылается на DLL; Я ожидал получить ошибку во время выполнения, но приложение снова зависло при вызове CreateComObject()
.
Я также безуспешно пытался отменить регистрацию и зарегистрировать DLL.
p.s. Я использую BDS 2006