Сборка Cairo для Windows с MinGW (Проблемы с подключением libpng) - PullRequest
3 голосов
/ 28 января 2010

Я пытаюсь собрать cairo на Windows, используя MinGW (и MSYS). Я следую инструкциям по Компиляции GTK + 2.16.4 для Windows , за исключением того, что я использую последние версии, когда это возможно, то есть:

  • Zlib-1.2.3
  • Libpng-1.2.42
  • pixman-0.17.4
  • каир-1.8.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, версия распространяется GTK + Project ), с тем же результатом. Когда я запускаю «pkg-config -cflags -libs libpng», я получаю «-IC: / MinGW / include / libpng12 -LC: / MinGW / lib -lpng12», что кажется правильным. Я уверен, что совершаю какую-то глупую ошибку, но я не могу сказать, что это такое.

Ответы [ 2 ]

2 голосов
/ 23 ноября 2010

Я заметил, что libpng12.dll.a был слишком маленьким (<1 КБ). </p>

Это связано с неправильными символами в libpng.vers (символы имеют дополнительный _ в начале). После сборки libpng я удалил лишние _ и заново создал libpng12.dll.a - теперь размер в порядке. Но ... Правильная библиотека импорта не решает вашу (и мою) проблему.

2 голосов
/ 13 февраля 2010

Видимо, это известная проблема. Я не знаю, как удалось пропустить это, учитывая, что это даже упомянуто в блоге , за которым я следил (я думаю, можно с уверенностью предположить, что это также относится к Windows 7, учитывая, что я попробовал третье предложение и оно исправило мою проблему):

Теперь давайте установим MinGW. Обратите внимание, что MinGW не работает гладко в Windows Vista из-за странных ограничений файловой системы. Обходной путь

  • для установки MinGW в файловой системе FAT,
  • для работы в безопасном режиме или
  • для использования MinGW Portable, который, как говорят, работает хорошо.
...