2010-07-21 3 views
4

Main article il y a un header file et un source file. Après avoir copié ces deux fichiers et en ajoutant quelques têtes:Le symbole externe non résolu

#include <Windows.h> 
#include <d2d1.h> 
#pragma comment(lib, "d2d1") 
#include <dwrite.h> 
#include <d2d1helper.h> 
#include "SafeRelease.h" 

// Safe fichier realease

template<class Interface> 
inline void 
SafeRelease(
    Interface **ppInterfaceToRelease 
    ) 
{ 
    if (*ppInterfaceToRelease != NULL) 
    { 
     (*ppInterfaceToRelease)->Release(); 

     (*ppInterfaceToRelease) = NULL; 
    } 
} 

quand je suis en train de compiler ce projet, je reçois une erreur:

Erreur 1 Erreur LNK2019: symbole externe non résolu __imp__DWriteCreateFactory @ 12 référencé dans la fonction "private: long __thiscall SimpleText :: CreateDeviceIndependentResources (void)" (? CreateDeviceIndependentResources @ SimpleText @@ AAEJXZ)

Je n'ai aucune idée pourquoi. Tout? les en-têtes sont inclus. J'espère que certains d'entre vous seront en mesure d'aider avec cela.
Merci.

+0

Avez-vous configuré le chemin pour les fichiers lib et les fichiers dll pour les fichiers d'inclusion spécifiques? – DumbCoder

Répondre

15

Vous devez créer un lien vers Dwrite.lib, qui comprend la mise en œuvre de DWriteCreateFactory

Voir here pour la documentation. La section Exigences en bas explique ce que vous devez inclure et lier pour utiliser la fonction à laquelle l'erreur fait référence.

Vous pourriez probablement résoudre ce problème en ajoutant la ligne

#pragma comment(lib, "Dwrite") 
+0

+1 pour votre réponse. –

+1

Correction pour moi quand je l'ai ajouté juste sous l'include pour dwrite.h –

+0

Cela a également corrigé la même erreur pour moi (en ajoutant simplement la ligne #pragma ci-dessous l'include) dans un composant WinRT C++. – ch3rryc0ke

1

Après avoir ajouté:

#pragma comment(lib, "dwrite") 

ce code fonctionne.

1

Vous devez mentionner Dwrite.lib dans la liste des bibliothèques à lier à votre application.

Questions connexes