2015-09-11 3 views
0

Chaque fois que je tente d'exécuter ce codeerreur externe non résolu (D3D)

D3DXCreateFont(d3dDevice, 20, 0, FW_BOLD, 0, FALSE, DEFAULT_CHARSET, 
    OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, 
    choiceFont, &Font); 

Je reçois cette erreur

Error 1 error LNK2019: unresolved external symbol [email protected] referenced in function "public: void __thiscall BlackBox::CreateFontA(struct IDirect3DDevice9 *,char const *)" ([email protected]@@[email protected]@[email protected]) D:\Projects\Black_Box\Black_Box\BlackBox.obj Black_Box 

Répondre

0

Vous devez créer un lien avec d3dx9.lib dans l'héritage DirectX SDK pour obtenir D3DXCreateFont. Ceci est noté sur MSDN.

Si cette bibliothèque figure dans vos entrées, votre problème est peut-être que les chemins de la bibliothèque de liens ne sont pas correctement configurés. Pour VS 2010, 2012, 2013 ou 2015, vous devez ajouter manuellement les chemins SDK hérités à votre projet (Répertoires VC++):

Pour VS 2010 avec le kit de développement Windows 7.x ou la plate-forme compatible avec Windows XP Toolset pour VS 2012/2013/2015, vous devez d'abord répertorier les chemins du SDK DirectX - voir this post pour plus de détails.

  • Win32/x86 (32 bits)

    • $(DXSDK_DIR)Utilities\bin\x86;$(ExecutablePath)
    • $(DXSDK_DIR)Include;$(IncludePath)
    • $(DXSDK_DIR)Include;$(IncludePath)
  • x64 natif

    • $(DXSDK_DIR)Utilities\bin\x64;$(DXSDK_DIR)Utilities\bin\x86;$(ExecutablePath)
    • $(DXSDK_DIR)Include;$(IncludePath)
    • $(DXSDK_DIR)Lib\x64;$(LibraryPath)

Pour VS 2012, 2013, 2015 ou VS 2010 en utilisant SDK Windows 8.x via props, vous énumérez les chemins DirectX SDK seconde - voir Where is the DirectX SDK? pour plus de détails.

  • Win32/x86 (32 bits)

    • $(ExecutablePath);$(DXSDK_DIR)Utilities\bin\x86
    • $(IncludePath);$(DXSDK_DIR)Include
    • $(LibraryPath);$(DXSDK_DIR)Lib\x86
  • x64 native

    • $(ExecutablePath);$(DXSDK_DIR)Utilities\bin\x64;$(DXSDK_DIR)Utilities\bin\x86
    • $(IncludePath);$(DXSDK_DIR)Include
    • $(LibraryPath);$(DXSDK_DIR)Lib\x64
+0

Bien sûr, une meilleure solution est de ne pas utiliser l'héritage Direct3D 9, D3Dx9 dépréciée, ou l'héritage DirectX SDK. Utilisez plutôt Direct3D 11 avec le SDK Windows intégré dans VS 2012/2013/2015 avec le [Kit d'outils DirectX] (https: // github.com/Microsoft/DirectXTK) et la classe '' SpriteFont''. –

+0

Er, j'ai déjà lié d3d9x9. – Coloriez

+0

'' d3dx9.lib'' est une vraie bibliothèque. '' d3d9x9.lib'' ne l'est pas. –