我目前正在尝试编写一些代码来使用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;
}
有谁知道为什么会这样,如果有的话,怎么解决?
答案 0 :(得分:2)
您需要与D3DX10.lib链接。
假设您使用的是Visual Studio,请右键单击您的项目并打开“属性”。在左侧部分,展开并选择配置属性 - >链接器 - >输入。然后在右侧部分的“Addition Dependencies”中,将库名称添加为D3DX10.lib,使用分号将其与任何其他列出的库分开。
为了确保在构建过程中实际使用这些“附加依赖项”,还应该验证另外两件事。 在Configuration Properties-> Linked-> General下 1)确保为“链接库依赖关系”选择“是”。 2)确保为“使用库依赖项输入”选择“是”。
此外,将来,对于任何显示“未解析的外部符号”的错误,找出未解析的函数/符号所属的库,并在“附加依赖关系”中添加该库,如上所述。
答案 1 :(得分:0)
这个函数D3DX10CreateFontIndirect需要链接D3DX10.lib。顺便说一句,如果你想在DX11中渲染字体,建议你使用DirectWrite,这是在DirectX中渲染字体的新技术。