Мой инерфейс вместо IDispatch
От: Toughpheeckouse Россия  
Дата: 14.11.01 10:05
Оценка:
Доброго времени суток!

Возникла такая проблема: из КОМ-объекта нада передать ссылку на мой (конкретный интерфейс), а не IDispatch.
в IDL пишу ... [out, retval]<Мой интерфейс>** pVal МИДЛ мне говорит типа я не фига не знаю такого типа, ну я перенашу описания интерфейса объекта в описание библиотеки, тама вставляю importlib("myinterface.dll"). все типа пучком когда компилишь ИДЛину, но когда билдишь проект, то в сгенерированном МИДЛом хедернике компилер матерится на не описанный мой интерфейс.
Может если кто-то чё нить понял чё я тута написал, подскажет мне чё нить :)))
Думайте сами, решайте сами...
Re: Мой инерфейс вместо IDispatch
От: retalik www.airbandits.com/
Дата: 14.11.01 10:23
Оценка:
Здравствуйте Toughpheeckouse, Вы писали:

T>Доброго времени суток!


T>Возникла такая проблема: из КОМ-объекта нада передать ссылку на мой (конкретный интерфейс), а не IDispatch.

T>в IDL пишу ... [out, retval]<Мой интерфейс>** pVal МИДЛ мне говорит типа я не фига не знаю такого типа, ну я перенашу описания интерфейса объекта в описание библиотеки, тама вставляю importlib("myinterface.dll"). все типа пучком когда компилишь ИДЛину, но когда билдишь проект, то в сгенерированном МИДЛом хедернике компилер матерится на не описанный мой интерфейс.
T>Может если кто-то чё нить понял чё я тута написал, подскажет мне чё нить :)))
А свой интерфейс в IDL описан?
Успехов,
Виталий.
Re: Мой инерфейс вместо IDispatch
От: Cory Россия  
Дата: 14.11.01 10:23
Оценка:
Здравствуйте Toughpheeckouse, Вы писали:

T>Доброго времени суток!


T>Возникла такая проблема: из КОМ-объекта нада передать ссылку на мой (конкретный интерфейс), а не IDispatch.

T>в IDL пишу ... [out, retval]<Мой интерфейс>** pVal МИДЛ мне говорит типа я не фига не знаю такого типа, ну я перенашу описания интерфейса объекта в описание библиотеки, тама вставляю importlib("myinterface.dll"). все типа пучком когда компилишь ИДЛину, но когда билдишь проект, то в сгенерированном МИДЛом хедернике компилер матерится на не описанный мой интерфейс.
T>Может если кто-то чё нить понял чё я тута написал, подскажет мне чё нить :)))

Может я, конечно, не очень хорошо Вас понял, но при попытке смоделировать ситуацию у меня все прошло без каких-либо проблемм. Я создал проект ATL EXE server, там сначала один интерфейс IMyInterface с единственным методом, возвращающим ссылку на этот интерфейс ([out, retval]IMyInterface** pRet), а затем второй интерфейс, возвращающий ссылку на тот-же IMyInterface. Ни в первом, ни во втором случае никаких проблем при построении проекта у меня не возникло: 0 warnings, 0 errors.

С уважением
Cory.
Re: Мой инерфейс вместо IDispatch
От: Apna Россия  
Дата: 14.11.01 10:58
Оценка:
Здравствуйте Toughpheeckouse, Вы писали:

T>Доброго времени суток!


Точно, только что проверил. Все как надо работает как на Custom так и на Dual интерфейсах.
Re: Мой инерфейс вместо IDispatch
От: Toughpheeckouse Россия  
Дата: 14.11.01 10:59
Оценка:
Здравствуйте Toughpheeckouse, Вы писали:

T>Доброго времени суток!


T>Возникла такая проблема: из КОМ-объекта нада передать ссылку на мой (конкретный интерфейс), а не IDispatch.

T>в IDL пишу ... [out, retval]<Мой интерфейс>** pVal МИДЛ мне говорит типа я не фига не знаю такого типа, ну я перенашу описания интерфейса объекта в описание библиотеки, тама вставляю importlib("myinterface.dll"). все типа пучком когда компилишь ИДЛину, но когда билдишь проект, то в сгенерированном МИДЛом хедернике компилер матерится на не описанный мой интерфейс.
T>Может если кто-то чё нить понял чё я тута написал, подскажет мне чё нить :)))

этот интерфейс (который нада вернуть) на самом деле не мой... т.е. из другова объекта и я его делаю importlib("myinterface.h")
Думайте сами, решайте сами...
Re[2]: Мой инерфейс вместо IDispatch
От: Ростислав Глухов Россия http://www.geocities.com/rg2204/
Дата: 17.11.01 07:37
Оценка:
Здравствуйте Toughpheeckouse, Вы писали:

T>этот интерфейс (который нада вернуть) на самом деле не мой... т.е. из другова объекта и я его делаю importlib("myinterface.h")


А почему ".H"?
importlib ведь импортит Type Library?

importlib("stdole32.tlb");
importlib("stdole2.tlb");
importlib("MySuperLib.tlb");
- А Вы что курите?
— Минздрав предупреждает
Re[3]: Мой инерфейс вместо IDispatch
От: Toughpheeckouse Россия  
Дата: 17.11.01 10:19
Оценка:
Здравствуйте Ростислав Глухов, Вы писали:

РГ>Здравствуйте Toughpheeckouse, Вы писали:


T>>этот интерфейс (который нада вернуть) на самом деле не мой... т.е. из другова объекта и я его делаю importlib("myinterface.h")


РГ>А почему ".H"?

РГ>importlib ведь импортит Type Library?

РГ> importlib("stdole32.tlb");

РГ> importlib("stdole2.tlb");
РГ> importlib("MySuperLib.tlb");
Все правильно, видимо я выражаюсь непонятно.. ".h" это тот ашник, который генерится по идлене.. в прочем не важно уже, решение нашлось. если кому нить интересно могу предоставить решение.
Думайте сами, решайте сами...
Re: Мой инерфейс вместо IDispatch
От: Alex Россия  
Дата: 17.11.01 10:23
Оценка:
Если это COM сервер, то ты можешь вернуть указатель на интерфейс IUnknown а потом получить любой другой интерфейс. (QueryInterface).
Потому что по концепции COM: можно получить любой интерфейс через любой другой у одного объекта.

Желаю удачи...

PS Правда может быть я не правильно понял твою проблему...
Re[4]: Мой инерфейс вместо IDispatch
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.11.01 18:57
Оценка:
Здравствуйте Toughpheeckouse, Вы писали:

T>... в прочем не важно уже, решение нашлось. если кому нить интересно могу предоставить решение.


Спрашиывкшь! Если сам решил проблему, то обязательно пость решение сюда. Другим может оказаться интересно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Мой инерфейс вместо IDispatch
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.11.01 18:59
Оценка:
Здравствуйте Toughpheeckouse.

А вобще то и должен орать. Ты же тлько ссылку на интерфейс даешь. Если ты его и реализуещь то нужно его описание еще и #import-ом дать...
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.