Здравствуйте Vi2, Вы писали:
Vi2>Здравствуйте Михаил Челноков, Вы писали:
МЧ>>Например, я пишу:
Vi2>МЧ>>__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);
МЧ>>};
Vi2>
МЧ>>Это всё чУдно компилируется, генерится IDL, из него TLB, и потом я могу писать нечто типа
МЧ>>IMyInterfacePtr p;
МЧ>>...p->x=0;
МЧ>>Однако, такое я могу писать только в другом проекте. Т.е. в том, при компиляции которого TLB уже есть и импортирован. В том же проекте, при компиляции которого этот TLB в конце концов генерируется, компилятор выдает ошибку — нет такого поля в этом классе.
МЧ>>Что делать?
Vi2>Если у тебя файл x.idl, то Wizard добавляет в #include несколько файлов, связанных с твоим x.idl. Это файлы x.h и x_i.c.
Увы. У меня как раз не x.idl, а x.h, из которого компилятор генерирует _x.idl (с помощью упомянутых атрибутов) и _x.h.
В том-то все и дело — получается что idl и tlb генерируемые и мне нечему делать #import на этапе компиляции этого же проекта. Я хочу как-то заставить компилятор понять, что x — это свойство.