2015-10-17 3 views
0

Je suivais ce post pour construire et installer le cairo.Symbole externe non résolu: __cairo_path_fixed_stroke_to_traps

Cependant, je me suis coincé avec l'erreur ci-dessous:

Error 277 error LNK2019: unresolved external symbol __cairo_path_fixed_stroke_to_traps referenced in function __cairo_traps_compositor_stroke C:\gtk_compilation\cairo\cairo-1.12.18\msvc\vs10\cairo-traps-compositor.obj cairo 

Le guide d'installation dit que je dois désactiver l'ensemble l'optimisation du programme que je n'utilisant le drapeau du compilateur /GL- mais il n'y a aucun moyen autour de la question.

Voici un extrait du fichier C:\gtk_compilation\cairo\cairo-1.12.18\msvc\vs10\cairo-traps-compositor.c:

cairo_int_status_t (*func) (const cairo_path_fixed_t *path, 
       const cairo_stroke_style_t *stroke_style, 
       const cairo_matrix_t *ctm, 
       const cairo_matrix_t *ctm_inverse, 
       double   tolerance, 
       cairo_traps_t  *traps); 
composite_traps_info_t info; 
unsigned flags; 

if (antialias == CAIRO_ANTIALIAS_BEST || antialias == CAIRO_ANTIALIAS_GOOD) { 
     func = _cairo_path_fixed_stroke_polygon_to_traps; 
     flags = 0; 
    } else { 
     func = _cairo_path_fixed_stroke_to_traps; /* line#2183 */ 
     flags = need_bounded_clip (extents) & ~NEED_CLIP_SURFACE; 
    } 

Les fonctions ci-dessus sont définies dans cairoint.h comme:

cairo_private cairo_int_status_t 
_cairo_path_fixed_stroke_to_traps (const cairo_path_fixed_t *path, 
        const cairo_stroke_style_t *stroke_style, 
        const cairo_matrix_t *ctm, 
        const cairo_matrix_t *ctm_inverse, 
        double  tolerance, 
        cairo_traps_t *traps); 

cairo_private cairo_int_status_t 
_cairo_path_fixed_stroke_polygon_to_traps (const cairo_path_fixed_t *path, 
         const cairo_stroke_style_t *stroke_style, 
         const cairo_matrix_t *ctm, 
         const cairo_matrix_t *ctm_inverse, 
         double  tolerance, 
         cairo_traps_t *traps); 

Quelqu'un pourrait s'il vous plaît suggérer une solution de contournement pour cela?

+1

cairoint.h n'est pas où la fonction est définie; c'est là que c'est déclaré. La fonction est définie dans cairo-path-stroke-traps.c. Ce fichier est-il compilé? Est-ce que c'est lié? – andlabs

+0

Merci pour cela, je viens de constater que ce fichier particulier n'est pas dans les sources du projet. Gosh, pourquoi je n'ai pas vérifié cela avant? – sjsam

Répondre

0

Après le commentaire @andlabs, j'ai découvert que le fichier cairo-path-stroke-traps.c n'était pas inclus dans les sources du projet Visual Studio. Ajouté celui-ci et reconstruit la solution - Voila !!

+0

Huh, quelle distribution du Caire n'inclut pas ce fichier? Cela doit être corrigé ... – andlabs

+0

@andlabs: J'ai téléchargé l'archive à partir du site officiel et du fichier du projet Visual Studio à partir d'ici [ici] (https://wiki.gnome.org/Projects/GTK%2B/Win32 /MSVCCompilationOfGTKStack?action=AttachFile&do=get&target=cairo-vsprojects.zip).Il y a une chance que, le fichier de projet est obsolète, mais même alors, il est difficile de manquer 'cairo-path-stroke-traps.c' IMHO. – sjsam