代码之家  ›  专栏  ›  技术社区  ›  kloffy

使用mingw构建cairo for windows(链接libpng时出现问题)

  •  3
  • kloffy  · 技术社区  · 16 年前

    我正在努力建造 cairo 在Windows上使用mingw(和msys)。我在遵循指示 Compiling GTK+ 2.16.4 for Windows ,除了尽可能使用最新版本,即:

    • ZLB-1.2.3
    • LIPPNG-1.2.42
    • PIXMAN-0.174
    • CAIRO-1.8

    在我尝试建造真正的开罗之前,这是非常有效的。配置成功,但在make cairo期间,似乎无法链接到我的libpng版本。过了一会儿,我得到了一长串错误,比如:

    .libs/cairo-png.o: In function `png_simple_error_callback':
    /home/user/cairo-1.8.8/src/cairo-png.c:95: undefined reference to `png_get_error_ptr'
    .libs/cairo-png.o: In function `png_simple_warning_callback':
    /home/user/cairo-1.8.8/src/cairo-png.c:112: undefined reference to `png_get_error_ptr'
    
    ...
    
    .libs/cairo-png.o: In function `stream_read_func':
    /home/user/cairo-1.8.8/src/cairo-png.c:686: undefined reference to `png_error'
    collect2: ld returned 1 exit status
    make[3]: *** [libcairo.la] Error 1
    make[3]: Leaving directory `/home/user/cairo-1.8.8/src'
    make[2]: *** [all] Error 2
    make[2]: Leaving directory `/home/user/cairo-1.8.8/src'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/home/user/cairo-1.8.8'
    make: *** [all] Error 2

    我尝试过使用旧版本的libpng(1.2.40,该版本由 The GTK+ Project ,结果相同。当我运行“pkg config-cflags-libs libpng”i get-ic:/mingw/include/libpng12-lc:/mingw/lib-lpng12”时,这似乎是正确的。我肯定我犯了一些愚蠢的错误,但我不知道是什么。

    2 回复  |  直到 13 年前
        1
  •  2
  •   kloffy    16 年前

    显然这是一个已知的问题。我不知道怎么会错过它,因为它甚至在 blog 我在遵循(我认为假设这也适用于Windows7是安全的,因为我尝试了第三个建议,它解决了我的问题):

    现在,让我们安装Mingw。注意,由于奇怪的文件系统限制,mingw在WindowsVista上运行不顺畅。解决方法是

    • 要在FAT文件系统上安装mingw,
    • 在安全模式下工作,或
    • 使用Mingw便携式,据说它工作得很好。
        2
  •  2
  •   Hans-Christoph Steiner    13 年前

    我注意到“libpng12.dll.a”太小(<1KB)。

    这是因为libpng.vers中的符号不正确(符号有额外的 _ 开始时)。在libpng构建之后,我删除了额外的 γ 重新创建了libpng12.dll。现在可以手动调整大小了。 但是…正确的导入库不能解决您(和我)的问题。