未解析的外部符号:__cairo_path_fixed_stroke_to_traps

Unresolved external symbol : __cairo_path_fixed_stroke_to_traps

我正在按照这个 post 来构建和安装 cairo。

但是,我遇到了以下错误:

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

安装向导说我需要关闭整个程序优化 我确实使用了 /GL- 编译器标志,但仍然无法解决这个问题。

以下是 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;
    }

以上函数在cairoint.h中定义为:

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);

有人可以为此提出解决方法吗?

根据@andlabs 的评论,我发现 cairo-path-stroke-traps.c 文件未包含在 Visual Studio 项目源中。添加了这个并重建了解决方案 - 瞧!!