Сообщение об ошибке указывает, что вы не переопределили все абстрактные методы из интерфейса ID3DXAllocateHierarchy.
Просматривая аргументы, я вижу, что вы забыли «const» для нескольких аргументов CreateMeshContainer ()метод.В результате компилятор C ++ думает, что это другой метод, и жалуется, что оригинальный CreateMeshContainer () по-прежнему абстрактный.
From http://msdn.microsoft.com/en-us/library/bb205621(v=VS.85).aspx
HRESULT CreateMeshContainer(
[in] LPCSTR Name,
[in] const D3DXMESHDATA *pMeshData,
[in] const D3DXMATERIAL *pMaterials,
[in] const D3DXEFFECTINSTANCE *pEffectInstances,
[in] DWORD NumMaterials,
[in] const DWORD *pAdjacency,
[in] LPD3DXSKININFO pSkinInfo,
[out, retval] LPD3DXMESHCONTAINER *ppNewMeshContainer
);
Таким образом, решение состоит в следующем:Добавьте «const» к нескольким аргументам (но см. Обновление ниже).
Обновление : вам также не хватает некоторых «*» в ваших аргументах.Очевидно, вы объявили CreateMeshContainer для получения аргументов по значению, в то время как он должен быть по указателю const.Копирование вставки объявления из ссылки msdn и удаление тегов [in] может быть самым быстрым способом получения правильного объявления.
Предложение : Использование другого компилятора может помочь генерировать большепроницательные сообщения об ошибках, так как могут устанавливать уровень предупреждения как можно выше.Некоторые компиляторы перечисляют методы, которые все еще являются абстрактными.Некоторые компиляторы могут предупредить, что ваш CreateMeshContainer () не переопределяет виртуальный CreateMeshContainer () в интерфейсе.Любое предположение, что не так, может быть полезным.