Re: Использование #import вместо #include
От: Vi2 Удмуртия http://www.adem.ru
Дата: 12.09.02 06:40
Оценка:
Здравствуйте Михаил Челноков, Вы писали:

МЧ>Например, я пишу:

МЧ>__interface IMyInterface: IDispatch {
МЧ>[propget, id(1), helpstring("property x")] HRESULT x([out, retval] INT* pX);
МЧ>[propput, id(1), helpstring("property x")] HRESULT x([in] INT newX);
МЧ>};


МЧ>Это всё чУдно компилируется, генерится IDL, из него TLB, и потом я могу писать нечто типа

МЧ>IMyInterfacePtr p;
МЧ>...p->x=0;

МЧ>Однако, такое я могу писать только в другом проекте. Т.е. в том, при компиляции которого TLB уже есть и импортирован. В том же проекте, при компиляции которого этот TLB в конце концов генерируется, компилятор выдает ошибку — нет такого поля в этом классе.


МЧ>Что делать?


Если у тебя файл x.idl, то Wizard добавляет в #include несколько файлов, связанных с твоим x.idl. Это файлы x.h и x_i.c.

Никто не мешает тебе убрать #include "x.h", в котором нет Врапперов из #import, и добавить вместо этого #import с этими Врапперами. Однако, нужно учесть что директива #import может генерить другие имена для виртуальных методов из интерфейса (добавляется raw_ для методов). Это нужно учитывать при реализации их в классе.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.