IGroupPolicyObject
От: pjeff Украина  
Дата: 17.12.03 14:35
Оценка:
Думаю с такой проблемой кто-то сталкивался.
Дело обстоит так: пишу код

IGroupPolicyObject* pGPO;
CoCreateInstance( CLSID_GroupPolicyObject, NULL, CLSCTX_ALL, IID_IGroupPolicyObject, (void**)&pGPO );


а линкер не может найти _IDD_IGroupPolicyObject. Поиски в либах ни к чему не привели. В инете по
этому вопросу такче что-то ничего найти не могу. А микрософт говорит, что кроме заголовочного файла
ничего не надо.
Re: IGroupPolicyObject
От: UnrealAlex Россия  
Дата: 17.12.03 15:02
Оценка: 10 (1)
#include <initguid.h>
#include <GPEdit.h>


Все дело в распаковке макроса DEFINE_GUID:
1. Смотрим на определение CLSID_GroupPolicyObject в <GPEdit.h> — line 83:
DEFINE_GUID(CLSID_GroupPolicyObject, 0xea502722, 0xa23d, 0x11d1, 0xa7, 0xd3, 0x0, 0x0, 0xf8, 0x75, 0x71, 0xe3);


2. Смотрим определение DEFINE_GUID в <guiddef.h> — line 59
#ifdef INITGUID
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
        EXTERN_C const GUID DECLSPEC_SELECTANY name \
                = { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
#else
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
    EXTERN_C const GUID FAR name
#endif // INITGUID


3. Смотрим на файл <initguid.h>
#if _MSC_VER > 1000
#pragma once
#endif

#define INITGUID
#include <guiddef.h>



Итог:
Если подключить <initguid> до использования DEFINE_GUID, то определение GUID-а будет находиться там же где и описание — в h-файле, если не подключить — то его там не будет, будет предполагаться, что он определен в другом файле, например в _i.c
Невозможное мы сделаем сегодня — чудо займет немного больше времени. /Аноним/
Re[2]: IGroupPolicyObject
От: pjeff Украина  
Дата: 17.12.03 15:09
Оценка:
Здравствуйте, UnrealAlex, Вы писали:

UA>
UA>#include <initguid.h>
UA>#include <GPEdit.h>
UA>


Спасибо огромное
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.