Я определяю новый интерфейс и класс, который его реализует. Я добавил свой класс (XXX) и интерфейс (IXXX) в файл idl (я сгенерировал два uuids). Мой интерфейс имеет два простых метода. Я реализовал их (файлы XXX.h и XXX.cpp). Я включил следующую строку в InprocServer.cpp.
UNKNOWN_OBJECT(XXX)
Я получаю следующую ошибку:
Ошибка C2259 «XXX»: невозможно создать экземпляр абстрактного класса (компилирование исходного файла InprocServer.cpp)
нажатие на ошибку приводит меня к следующей строке в
Unknown.h
try
{
**p = new T(pUnkOuter); // refcount is already 1**
if (!p)
return E_OUTOFMEMORY;
}
Как узнать, какой метод не реализован?
Смотрите в окне вывода (View-> Output), а не в списке ошибок, и любые неосуществленные элементы будут частью диагностики.
Это работает до тех пор, пока у вас в настройках Tools-> Options, Projects and Solutions-> Build and Run for MSBuild установлено значение по крайней мере «Minimal», я не уверен насчет «Quiet».
Других решений пока нет …