![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Beatseed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 16.7.2003 Репутация: нет Всего: нет |
Люди помогите, кто знает!
Написал библиотечный COM-компонент передающий указатель интерфейса _Recordset(ADO) клиенту. Так вот клиент получает custom интерфейс моего обьекта, получает out параметром указатель интерфейса _Recordset. Но все это работает только когда обьект создается как inproc сервер. Установил обьект на другую машину, настроил DCOM. Работает. Но только указатель интерфейса _Recordset какой-то не работоспособный оказался. ЗЫ. Другие методы обьекта нормально выполняются. ЗЫЫ. Такая проблема возникла только у клиента написанного в Borland C++ 5.0. Клиент написанный в Visual C++ 7.0. работает без проблем. |
|||
|
||||
| Sun |
|
|||
|
Account removed ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1611 Регистрация: 14.8.2002 Репутация: нет Всего: 48 |
В Visual C++ встроенная поддержка COM, там все сделано на уровне компилятора. А Borland C++, IMHO, уже свое отжил. Возможно там кривовато реализован маршалинг объектов, таких как ADO Recordset.
-------------------- Account removed |
|||
|
||||
| Гость_Beatseed |
|
|||
|
Unregistered |
Дело в том что компонент написан на Visual C. Поэтому маршалинг должен быть один и тот же, так как прокси-стаб один и тот же. ЗЫ. Рекордсет передаю параметром через IDispatch. _Recordset* rs; ////////////////////////////operations *outRS=(IDispatch*)rs; |
|||
|
||||
| ziga |
|
|||
|
Unregistered |
nado vizivatj QueryInterface s i IID_IDispatch a nje prosto kastjitj na IDispatch*
|
|||
|
||||
| Beatseed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 16.7.2003 Репутация: нет Всего: нет |
Дело в том что outRS в моем примере это _Recordset*
Вызов обьекта происходит так: _Recordset* rs; MyObject->GetRs((IDispatch**)&rs); ////////////////////////// MyObject::GetRs(IDispatch** outRS) { _Recordset* rs; //тут создается обьект и заполняется данными *outRS=(IDispatch*)rs; } IDispatch* здесь не играет роли, то же самое если бы outRS определялся как void** |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |