использование COM-компонента
От: Аноним  
Дата: 28.03.08 09:24
Оценка:
Всем привет. У меня есть компонет, который написан другим разработчиком на Delfi. Он представляет собой dll-файл. Каким образом его можно использовать в Visual C++ ? никак не удаётся его подключить
Re: использование COM-компонента
От: SageMath  
Дата: 28.03.08 09:51
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А> Всем привет. У меня есть компонет, который написан другим разработчиком на Delfi. Он представляет собой dll-файл. Каким образом его можно использовать в Visual C++ ? никак не удаётся его подключить


Проси с него еще tlb файл — библиотеку типов. Потом регистрируй компоненту в реестре: "regsvr32 MyComponent.dll". Содержимое библиотеки типов можешь посмотреть с помощью системной утилиты oleview. В проекте в студии (например, для консольного приложения, перед функцией main) пишешь
#import "MyComponent.tlb" no_namespace named_guids raw_interfaces_only


И, если знаешь имя интерфейса и ГУИД объекта, который будешь создавать, пиши что-то вроде
IMyInterfacePtr p(CLSID_CMyComponent);


А если не знаешь — изучай библиотеку типов
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Make yourself.
Re[2]: использование COM-компонента
От: Аноним  
Дата: 28.03.08 10:37
Оценка:
Здравствуйте, SageMath, Вы писали:

SM>Проси с него еще tlb файл — библиотеку типов. Потом регистрируй компоненту в реестре: "regsvr32 MyComponent.dll". Содержимое библиотеки типов можешь посмотреть с помощью системной утилиты oleview. В проекте в студии (например, для консольного приложения, перед функцией main) пишешь

SM>
SM>#import "MyComponent.tlb" no_namespace named_guids raw_interfaces_only
SM>


SM>И, если знаешь имя интерфейса и ГУИД объекта, который будешь создавать, пиши что-то вроде

SM>
SM>IMyInterfacePtr p(CLSID_CMyComponent);
SM>


SM>А если не знаешь — изучай библиотеку типов


спасибо, это заработало. ТОлько теперь возникла другая проблема — компонент реализует несколько методов. Те, которые принимают в качестве параметров стандартные типы данных, работают нормально. Но один метод, который в качестве параметра принимает указатель на структуру, определённую пользователем, не работает (в компонент попадает указатель на непонятно что). Причём, этот компонент при отладке разработчиком в приложении на Delfi работает нормально...
Re[3]: использование COM-компонента
От: lev.matash  
Дата: 01.04.08 06:48
Оценка:
А>спасибо, это заработало. ТОлько теперь возникла другая проблема — компонент реализует несколько методов. Те, которые принимают в качестве параметров стандартные типы данных, работают нормально. Но один метод, который в качестве параметра принимает указатель на структуру, определённую пользователем, не работает (в компонент попадает указатель на непонятно что). Причём, этот компонент при отладке разработчиком в приложении на Delfi работает нормально...

в COM нельзя использовать произвольные структуры из-за разного представления данных в разных системах разработки.
варианта 2:
1. добивайся, чтоб разработчик компонента возвращал интерфейс, а не структуру.
2. бери у него структуру структуры, делай такую на си, только выравнивание в ней должно быть 1
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.