我正在尝试使用MinGW(和MSYS)在Windows上构建cairo。我正在关注Compiling GTK+ 2.16.4 for Windows的指示,除非我尽可能使用最新版本,即:
在我尝试构建实际的cairo之前,这种方法非常有效。配置成功,但在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”时,我得到“-IC:/ MinGW / include / libpng12 -LC:/ MinGW / lib -lpng12”,这似乎是正确的。我确定我犯了一些愚蠢的错误,但我不知道它是什么。
答案 0 :(得分:2)
显然这是一个已知问题。我不知道怎么设法错过它,因为它在我追随的blog中甚至被提及(我认为可以安全地假设这也适用于Windows 7,因为我尝试了第三个建议它解决了我的问题):
现在,让我们安装MinGW。请注意,由于奇怪的文件系统限制,MinGW无法在Windows Vista上平稳运行。解决方法是
- 在FAT文件系统上安装MinGW,
- 以安全模式工作,或
- 使用据说工作良好的MinGW Portable。
答案 1 :(得分:2)
我注意到'libpng12.dll.a'太小了(<1kb)。
由于libpng.vers中的符号不正确(符号在开头有额外的_
)。在libpng构建之后,我删除了额外的_
并手动重新创建了libpng12.dll.a - 现在大小正常。
但是......正确的导入库无法解决您(和我的)问题。