В настоящее время я пытаюсь написать код для отображения текста с использованием DirectX 11, но когда дело доходит до его создания, я получил следующую ошибку:
1>Source.obj : error LNK2019: unresolved external symbol _D3DX10CreateFontIndirectA@12 referenced in function "bool __cdecl InitScene(void)" (?InitScene@@YA_NXZ)
И для справки, вот код, который я получил, включая строку, которая, я думаю, может быть причиной проблемы:
bool InitScene()
{
D3DX10_FONT_DESC fd;
fd.Height = 175;
fd.Width = 0;
fd.Weight = 0;
fd.MipLevels = 1;
fd.Italic = false;
fd.CharSet = OUT_DEFAULT_PRECIS;
fd.Quality = DEFAULT_QUALITY;
fd.PitchAndFamily = DEFAULT_PITCH | FF_DONTCARE;
strcpy_s(fd.FaceName, "Impact"); //Need to find out how to fix this.
D3DX10CreateFontIndirect(d3dDevice, &fd, &Font);
return true;
}
Кто-нибудь знает, почему это происходит, и если да, то как это можно исправить?
Вам нужно связаться с D3DX10.lib.
Предполагая, что вы используете Visual Studio, щелкните правой кнопкой мыши свой проект и откройте Свойства. В левой части разверните и выберите «Свойства конфигурации» -> «Линкер» -> «Ввод». Затем в правом разделе в разделе «Зависимости добавления» добавьте имя библиотеки как D3DX10.lib, разделяя его с любыми другими перечисленными библиотеками, используя точку с запятой.
Чтобы убедиться, что эти «дополнительные зависимости» действительно используются в процессе сборки, необходимо проверить еще две вещи.
Под Свойства конфигурации-> Связанные-> Общие
1) обязательно выберите «Да» для «Зависимости библиотеки ссылок».
2) выберите «Да» для «Использовать входы зависимостей библиотеки».
Также, в будущем, для любой такой ошибки, которая говорит «Неразрешенный внешний символ», выясните, к какой библиотеке принадлежит Неразрешенная функция / символ, и добавьте эту библиотеку в «Дополнительные зависимости», как упомянуто выше.
Эту функцию D3DX10CreateFontIndirect нужно связать с D3DX10.lib. Кстати, если вы хотите визуализировать шрифт в DX11, рекомендуется использовать DirectWrite, это новая технология рендеринга шрифтов в DirectX.